CREATE TABLE [dbo].[TXMVTO_CNTB]
(
[CO_EMPR] [dbo].[TD_VC_002] NOT NULL,
[NU_CNTB_EMPR] [dbo].[TD_IN_001_CONT] NOT NULL,
[CO_UNID_CNTB] [dbo].[TD_VC_003] NOT NULL,
[CO_OPRC_CNTB] [dbo].[TD_VC_003] NOT NULL,
[NU_ANNO] [dbo].[TD_IN_004_ANNO] NOT NULL CONSTRAINT [DF__TXMVTO_CN__NU_AN__23893F36] DEFAULT (datepart(year,getdate())),
[NU_MESE] [dbo].[TD_IN_002_MESE] NOT NULL,
[NU_ASTO] [dbo].[TD_VC_010] NOT NULL,
[NU_SECU] [dbo].[TD_IN_002] NOT NULL,
[FE_ASTO_CNTB] [dbo].[TD_DT_001] NOT NULL,
[CO_CNTA_EMPR] [dbo].[TD_VC_020_CNTA] NULL,
[TI_AUXI_EMPR] [dbo].[TD_VC_001] NULL,
[CO_AUXI_EMPR] [dbo].[TD_VC_020] NULL,
[TI_DOCU] [dbo].[TD_VC_003] NULL,
[NU_DOCU] [dbo].[TD_VC_020] NULL,
[FE_DOCU] [dbo].[TD_DT_001] NULL,
[FE_DOCU_VENC] [dbo].[TD_DT_001] NULL,
[TI_CAMB] [dbo].[TD_VC_003] NOT NULL,
[CO_MONE] [dbo].[TD_VC_003] NOT NULL,
[FA_CAMB] [dbo].[TD_NU_015_006] NOT NULL CONSTRAINT [DF__TXMVTO_CN__FA_CA__284DF453] DEFAULT ((1.000)),
[FA_CAMB_DIAR] [dbo].[TD_NU_015_006] NOT NULL CONSTRAINT [DF__TXMVTO_CN__FA_CA__2A363CC5] DEFAULT ((1.000)),
[TI_OPER] [dbo].[TD_VC_003] NOT NULL CONSTRAINT [DF__TXMVTO_CN__TI_OP__2C1E8537] DEFAULT ('CAR'),
[IM_MVTO_ORIG] [dbo].[TD_NU_016_004] NOT NULL CONSTRAINT [DF__TXMVTO_CN__IM_MV__2E06CDA9] DEFAULT ((0)),
[IM_MVTO_CNTB] [dbo].[TD_NU_016_004] NOT NULL CONSTRAINT [DF__TXMVTO_CN__IM_MV__2FEF161B] DEFAULT ((0)),
[DE_GLOS] [dbo].[TD_VC_100] NOT NULL,
[TI_DOCU_REFE] [dbo].[TD_VC_003] NULL,
[NU_DOCU_REFE] [dbo].[TD_VC_020] NULL,
[FE_DOCU_REFE] [dbo].[TD_DT_001] NULL,
[NO_GIRA] [dbo].[TD_VC_100] NULL,
[FE_ENTR_CHEQ] [dbo].[TD_DT_001] NULL,
[FE_PROG_CHEQ] [dbo].[TD_DT_001] NULL,
[CO_ORDE_SERV] [dbo].[TD_VC_020] NULL,
[SI_MVTO_CNTB] [dbo].[TD_VC_003] NOT NULL,
[CO_UNID_ORIG] [dbo].[TD_VC_003] NULL,
[CO_OPRC_ORIG] [dbo].[TD_VC_003] NULL,
[NU_ASTO_ORIG] [dbo].[TD_VC_010] NULL,
[NU_SECU_ORIG] [dbo].[TD_IN_002] NULL,
[CO_CNTA_ORIG] [dbo].[TD_VC_020] NULL,
[ST_OTRS] [dbo].[TD_VC_020] NULL,
[NU_PROC] [dbo].[TD_IN_001] NULL,
[NU_PROC_SECU] [dbo].[TD_IN_001] NULL,
[ST_IMPR_CHEQ] [dbo].[TD_VC_001_SINO] NOT NULL CONSTRAINT [DF__TXMVTO_CN__ST_IM__32CB82C6] DEFAULT ('N'),
[ST_FLAG] [dbo].[TD_VC_020] NULL,
[ST_GEST] [dbo].[TD_VC_001_SINO] NOT NULL CONSTRAINT [DF__TXMVTO_CN__ST_GE__34B3CB38] DEFAULT ('N'),
[ST_REDO] [dbo].[TD_VC_001_SINO] NOT NULL CONSTRAINT [DF__TXMVTO_CN__ST_RE__369C13AA] DEFAULT ('N'),
[CO_TABL_ORIG] [dbo].[TD_IN_001] NULL,
[CO_CLAV_TAOR] [dbo].[TD_VC_100] NULL,
[CO_TIPO_OPER] [dbo].[TD_VC_003] NULL,
[IM_MVTO_RETE] [dbo].[TD_NU_016_004] NULL CONSTRAINT [DF__TXMVTO_CN__IM_MV__38845C1C] DEFAULT ((0)),
[ST_IMPR_RETE] [dbo].[TD_VC_001_SINO] NOT NULL CONSTRAINT [DF__TXMVTO_CN__ST_IM__3A6CA48E] DEFAULT ('N'),
[CO_USUA_APRO] [dbo].[TD_VC_008] NULL,
[FE_USUA_APRO] [dbo].[TD_DT_001] NULL,
[NU_SECU_DIST] [dbo].[TD_IN_001] NULL,
[PO_DIST] [dbo].[TD_NU_009_004] NOT NULL CONSTRAINT [DF__TXMVTO_CN__PO_DI__3C54ED00] DEFAULT ((1.000)),
[TI_DOCU_DETR] [dbo].[TD_VC_003] NULL,
[NU_DOCU_DETR] [dbo].[TD_VC_020] NULL,
[FE_DOCU_DETR] [dbo].[TD_DT_001] NULL,
[ST_CANC_DOCU] [dbo].[TD_VC_001_SINO] NULL CONSTRAINT [DF__TXMVTO_CN__ST_CA__3E3D3572] DEFAULT ('N'),
[ST_DIFE_MAYO] [dbo].[TD_VC_001_SINO] NULL CONSTRAINT [DF__TXMVTO_CN__ST_DI__40257DE4] DEFAULT ('N'),
[ST_DIFE_CAMB] [dbo].[TD_VC_001_SINO] NULL CONSTRAINT [DF__TXMVTO_CN__ST_DI__420DC656] DEFAULT ('N'),
[ST_MASI] [dbo].[TD_VC_001_SINO] NULL CONSTRAINT [DF__TXMVTO_CN__ST_MA__43F60EC8] DEFAULT ('N'),
[ST_AJUS_ORIG] [dbo].[TD_VC_001_SINO] NULL CONSTRAINT [DF__TXMVTO_CN__ST_AJ__45DE573A] DEFAULT ('N'),
[FE_PAGO] [dbo].[TD_DT_001] NULL,
[FE_PAGO_AGEN] [dbo].[TD_DT_001] NULL,
[NU_ORDE_FORM] [dbo].[TD_NU_016_004] NULL CONSTRAINT [DF__TXMVTO_CN__NU_OR__47C69FAC] DEFAULT ((0)),
[CO_MEPA] [dbo].[TD_VC_003] NULL,
[CO_TIOP_DETR] [dbo].[TD_VC_003] NULL,
[CO_ACTI_DETR] [dbo].[TD_VC_003] NULL,
[ST_FORM_1062] [dbo].[TD_VC_001_SINO] NULL CONSTRAINT [DF__TXMVTO_CN__ST_FO__49AEE81E] DEFAULT ('N'),
[ST_FORM_1262] [dbo].[TD_VC_001_SINO] NULL CONSTRAINT [DF__TXMVTO_CN__ST_FO__4B973090] DEFAULT ('N'),
[ST_FORM_1662] [dbo].[TD_VC_001_SINO] NULL CONSTRAINT [DF__TXMVTO_CN__ST_FO__4D7F7902] DEFAULT ('N'),
[TI_AUXI_EXTR] [dbo].[TD_VC_001] NULL,
[CO_AUXI_EXTR] [dbo].[TD_VC_020] NULL,
[CO_DEST] [dbo].[TD_VC_003] NULL,
[NU_DEST] [dbo].[TD_VC_003] NULL,
[FE_INIC_PRES] [dbo].[TD_DT_001] NULL,
[FE_FINA_PRES] [dbo].[TD_DT_001] NULL,
[ST_EXON_INAF] [dbo].[TD_VC_003] NULL,
[ST_COMP] [dbo].[TD_VC_003] NULL,
[ST_REPA] [dbo].[TD_VC_001_SINO] NULL CONSTRAINT [DF__TXMVTO_CN__ST_RE__4F67C174] DEFAULT ('N'),
[CO_USUA_CREA] [dbo].[TD_VC_008_USUA] NOT NULL,
[FE_USUA_CREA] [dbo].[TD_DT_001_SIST] NOT NULL CONSTRAINT [DF__TXMVTO_CN__FE_US__515009E6] DEFAULT (getdate()),
[CO_USUA_MODI] [dbo].[TD_VC_008_USUA] NOT NULL,
[FE_USUA_MODI] [dbo].[TD_DT_001_SIST] NOT NULL CONSTRAINT [DF__TXMVTO_CN__FE_US__52442E1F] DEFAULT (getdate())
) ON [PRIMARY]
CREATE Trigger [dbo].[TD_TXMVTO_CNTB_D01] On [dbo].[TXMVTO_CNTB]    
For Delete       
/*---------------------------------------------------------*/      
/*---- Empresa              : OFISIS S.A.              ----*/      
/*---- Cliente              : OFISIS S.A.              ----*/      
/*---- Sistema              : OFICONT                  ----*/      
/*---- M>dulo               : EMPRESA         	       ----*/      
/*---- Programa             : GESTION          	       ----*/      
/*---- Script               : TD_TXMVTO_CNTB_D01       ----*/      
/*---- Nombre TR            : TD_TXMVTO_CNTB_D01       ----*/      
/*---- Desarrollado por     : LGP         	       ----*/      
/*---- Fecha Creaci>n       : 13/02/2003               ----*/      
/*---- Base de Datos        : SQL                      ----*/      
/*---- Versi>n              : 8.0                      ----*/      
/*---- Invoca a SP          :                          ----*/      
/*---------------------------------------------------------*/      
/*---- Modificado 1 por     :      PERCY GARCIA        ----*/      
/*---- Fecha Modificaci>n   :    19/02/2004            ----*/      
/*---- Detalle Modificaci>n :     COMENTO VALID. DIF CAMBIO  ----*/      
/*---------------------------------------------------------*/      
/*---------------------------------------------------------*/    
/*----- Modificado 2 por : PDGV                        ----*/    
/*----- Fecha Modifica   : 31/12/2004                  ----*/    
/*----- Detalle Modifica : SE QUITO VALID PARA QUE SAQUE CTAS DE CONTRAP Y DESTINO---*/    
/*-------------------------------------------------------------------*/    
/*---------------------------------------------------------------------*/  
/*----- Modificado 5 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 30/06/2006                             -----*/  
/*----- Detalle Modifica : se aumento el tamaño de la @VSNV_QUIE_CNTA de 10 a 40-----*/  
/*---------------------------------------------------------------------*/  
/*---- Comentarios: Valida Fecha de Proceso            ----*/      
/*---- Drop Trigger TD_TXMVTO_CNTB_D01   COMMIT        ----*/      
/*---------------------------------------------------------*/      
/*---- Se ejecuta con el INSERT de la Tabla            ----*/      
/*---------------------------------------------------------*/      
As      
Begin      
Declare       
--------------- Variables Validacion Fechas de Proceso -------------------      
  @CSCO_EMPR       TD_VC_002,      
  @CNNU_CNTB_EMPR  TD_IN_001,      
  @CSCO_UNID_CNTB  TD_VC_003,      
  @CSCO_OPRC_CNTB  TD_VC_003,      
  @CNNU_ANNO       TD_IN_001,      
  @CNNU_MESE       TD_IN_001,      
  @CSNU_ASTO       TD_VC_010,      
  @CNNU_SECU       TD_IN_002,      
  @CDFE_ASTO_CNTB  TD_DT_001,      
  @CSCO_CNTA_EMPR  TD_VC_020,      
  @CSTI_AUXI_EMPR  TD_VC_001,      
  @CSCO_AUXI_EMPR  TD_VC_020,      
  @CSCO_MONE       TD_VC_003,      
  @CSTI_OPER       TD_VC_003,      
  @CNIM_MVTO_ORIG  TD_NU_016_004,      
  @CNIM_MVTO_CNTB  TD_NU_016_004,      
  @VNIM_CARG_ORIG  TD_NU_016_004,      
  @VNIM_ABON_ORIG  TD_NU_016_004,      
  @VNIM_CARG_CNTB  TD_NU_016_004,      
  @VNIM_ABON_CNTB  TD_NU_016_004,      
  @CSSI_MVTO_CNTB  TD_VC_003,      
  @CSCO_ORDE_SERV  TD_VC_020,      
  @VSST_CIER_CNTB  TD_VC_001,      
  @VSDE_ERRO       TD_VC_050,      
--------------- Variables Gestion -------------------      
  @VSST_GEST_LINE  TD_VC_001,      
  @VSST_ASIE_GEST  TD_VC_003,      
  @VSCO_OPRC_CNTB  TD_VC_003,      
  @VSCO_CNTA_CONT  TD_VC_020,      
  @VSCO_CNTA_DEST  TD_VC_020,      
--------------- Variables Mayorizacion -------------------      
  @VSPR_DATO       TD_VC_020,      
-- Variables Loop --      
  @VNNV_INFO_CNTA  TD_IN_001,      
  @VSNV_QUIE_CNTA  TD_VC_040,      
  @VNCA_INIC       TD_IN_001,      
  @VNCA_LONG       TD_IN_001,      
  @VNCA_LONG_AUXI  TD_IN_001,      
  @VNNV_AUXI       TD_IN_001,      
  @VNNU_FINA       TD_IN_001,      
--------------- Variables Actualizacion Datos Reales -------------------      
  @CNNU_SECU_MVTO  TD_IN_001,      
  @VNIM_MVTO_ORIG  TD_NU_016_004,      
  @VNIM_MVTO_CNTB  TD_NU_016_004,      
  @VSDE_CADE_IMPR  TD_VC_020,      
  @VSCO_MONE_CNTB  TD_VC_003,      
  @CNNU_REGI_EMPR  TD_IN_001,      
  @CSCO_PART       TD_VC_020,      
  @CNPO_APLI       TD_NU_015_006,      
  @CSCO_DOMI       TD_VC_003,      
  @CNTI_SIGN_CONT  TD_IN_001,      
  @CNTI_OPER_ARIT  TD_IN_001,      
  @CSCO_MONE_PART  TD_VC_003,      
  @CSTI_CAMB_PART  TD_VC_003,       
  @VNIM_MVTO       TD_NU_016_004,      
  @VNIM_MVTO_ACUM  TD_NU_016_004,      
  @VNPO_APLI_DOMI  TD_NU_015_006,      
  @CSTI_CAMB    TD_VC_003,      
  @CNFA_CAMB    TD_NU_015_006,       
  @VSST_PRES    TD_VC_001,       
  @VSST_ASIE_DFCA  TD_VC_003,      
  @VSST_DFCA_LINE  TD_VC_001,       
  @VSID_DIFE       TD_VC_003,       
  @VSCO_OPRC_CANC  TD_VC_003,  
  @CSST_RECU    TD_VC_001_SINO  
      
--Solo se Ejecuta si el numero de Proceso es Nulo o Cero      
If Exists( Select NU_PROC From Deleted      
           Where  NU_PROC Is Null Or NU_PROC = 0 )      
Begin      

If Not Exists( Select ST_MASI From Deleted
           Where  ST_MASI = 'S' )
Begin
      
If Exists( Select ST_GEST From Deleted      
           Where ( ST_GEST = 'N'  ) Or ( ST_GEST = 'S' And ST_OTRS Is NULL ) )      
Begin      

--------------- Validacion Fechas de Proceso -------------------      
  Declare CT_TXMVTO_CNTB_D01_1 Cursor      
  For      
  Select  CO_EMPR, NU_CNTB_EMPR,  CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,      
   NU_MESE, NU_ASTO,    NU_SECU,  CO_CNTA_EMPR,   SI_MVTO_CNTB    
  From Deleted  
      
  Open  CT_TXMVTO_CNTB_D01_1      
  Fetch CT_TXMVTO_CNTB_D01_1 Into      
   @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @CNNU_ANNO,  @CNNU_MESE,      
   @CSNU_ASTO,  @CNNU_SECU,  @CSCO_CNTA_EMPR, @CSSI_MVTO_CNTB    
      
  While @@Fetch_Status = 0      
  Begin      
      
    If  @@Fetch_Status < 0      
      Begin      
        Close CT_TXMVTO_CNTB_D01_1      
        Deallocate CT_TXMVTO_CNTB_D01_1      
      End      
-- Inicio      
   Select @VSST_CIER_CNTB = ST_CIER_CNTB      
   From  TCFECH_PROC      
   Where CO_EMPR = @CSCO_EMPR      
   and  NU_CNTB_EMPR = @CNNU_CNTB_EMPR      
   and  CO_UNID_CNTB = @CSCO_UNID_CNTB      
   and  CO_OPRC_CNTB = @CSCO_OPRC_CNTB      
   and  NU_ANNO = @CNNU_ANNO      
   and  NU_MESE = @CNNU_MESE      
      
   If @VSST_CIER_CNTB = 'S'       
     Begin      
      Select @VSDE_ERRO = 'El periodo esta bloqueado'      
      RAISERROR 50000 @VSDE_ERRO      
      ROLLBACK TRANSACTION       
     End      
-- Fin      
  Fetch CT_TXMVTO_CNTB_D01_1 Into      
   @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB,      
   @CSCO_OPRC_CNTB, @CNNU_ANNO,  @CNNU_MESE,      
   @CSNU_ASTO,  @CNNU_SECU,  @CSCO_CNTA_EMPR,      
   @CSSI_MVTO_CNTB      
       
  End      
  Close CT_TXMVTO_CNTB_D01_1      
  Deallocate CT_TXMVTO_CNTB_D01_1      
      
--------------- Gestion ------------------------------------------------------------------      
  Select @VSST_GEST_LINE = NULL      
  Select @VSST_ASIE_GEST = NULL      
  Select @VSCO_CNTA_CONT = NULL      
  Select @VSCO_CNTA_DEST = NULL      
  
  Declare CT_TXMVTO_CNTB_D01_2 Cursor      
  For      
  Select T1.CO_EMPR, T1.NU_CNTB_EMPR, T1.CO_UNID_CNTB, T1.CO_OPRC_CNTB, T1.NU_ANNO, T1.NU_MESE,   
         T1.NU_ASTO, T1.NU_SECU, T1.CO_CNTA_EMPR, T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR, T2.ST_RECU  
  From Deleted T1, TMPARA_CONT T2  
  Where T1.CO_EMPR = T2.CO_EMPR  
       
  Open CT_TXMVTO_CNTB_D01_2      
  Fetch CT_TXMVTO_CNTB_D01_2 into @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB,      
         @CSCO_OPRC_CNTB, @CNNU_ANNO, @CNNU_MESE, @CSNU_ASTO, @CNNU_SECU, @CSCO_CNTA_EMPR,    
         @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSST_RECU  
      
  While @@Fetch_status = 0      
   Begin      
     -- Para obtener parametros de la TMPARA_CONT      
     Select @VSST_GEST_LINE = ST_GEST_LINE,       
            @VSST_ASIE_GEST = ST_ASIE_GEST    
     from TMPARA_CONT      
     Where CO_EMPR = @CSCO_EMPR      
     And NU_ANNO = 9999      
      
     -- Si gestion es en linea      
     If @VSST_GEST_LINE = 'S'      
       Begin      
           If @VSST_ASIE_GEST = 'ORI' -- Si es en el mismo asiento      
            Begin  
             If @CSST_RECU = 'N'  
               EXEC SP_TXMVTO_CNTB_D04 @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @CNNU_ANNO, @CNNU_MESE, @CSNU_ASTO, @CNNU_SECU, @CSCO_CNTA_EMPR  
  
             Delete TXMVTO_CNTB      
             Where CO_EMPR = @CSCO_EMPR      
               and NU_CNTB_EMPR = @CNNU_CNTB_EMPR      
               and CO_UNID_CNTB = @CSCO_UNID_CNTB        
               and CO_OPRC_CNTB = @CSCO_OPRC_CNTB      
               and NU_ANNO = @CNNU_ANNO      
               and NU_MESE = @CNNU_MESE      
               and NU_ASTO = @CSNU_ASTO      
               and NU_SECU_ORIG = @CNNU_SECU      
               and CO_CNTA_ORIG = @CSCO_CNTA_EMPR      
               And ST_GEST = 'S'    
            End      
           Else If @VSST_ASIE_GEST = 'COP' -- Si es en el asiento de gestion      
             Begin      
               Select @VSCO_OPRC_CNTB = CO_OPRC_CNTB      
               from TTIDEN_OPER      
               Where CO_EMPR = @CSCO_EMPR      
                 and NU_CNTB_EMPR = @CNNU_CNTB_EMPR      
                 and ID_OPRC = '011'      
  
               If @CSST_RECU = 'N'      
                 EXEC SP_TXMVTO_CNTB_D04 @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @VSCO_OPRC_CNTB, 
			@CNNU_ANNO, @CNNU_MESE, @CSNU_ASTO, @CNNU_SECU, @CSCO_CNTA_EMPR
  
               Delete TXMVTO_CNTB      
               Where CO_EMPR = @CSCO_EMPR      
                 and NU_CNTB_EMPR = @CNNU_CNTB_EMPR      
                 and CO_UNID_ORIG = @CSCO_UNID_CNTB        
                 and CO_OPRC_CNTB = @VSCO_OPRC_CNTB      
                 and NU_ANNO = @CNNU_ANNO      
                 and NU_MESE = @CNNU_MESE      
                 and NU_ASTO_ORIG = @CSNU_ASTO      
                 and NU_SECU_ORIG = @CNNU_SECU      
                 and CO_CNTA_ORIG = @CSCO_CNTA_EMPR      
                 and CO_OPRC_ORIG = @CSCO_OPRC_CNTB      
                  And ST_GEST = 'S'    
             End
       End
      
   Fetch CT_TXMVTO_CNTB_D01_2 into @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB,   
	@CNNU_ANNO, @CNNU_MESE, @CSNU_ASTO, @CNNU_SECU, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR,   
 	@CSCO_AUXI_EMPR, @CSST_RECU  
   End      
  Close CT_TXMVTO_CNTB_D01_2      
  Deallocate CT_TXMVTO_CNTB_D01_2      
     
 End --- If Exists( Select ST_GEST From INSERTED      
 End -- Select ST_MASI From Deleted        
 End --(If Exists( Select NU_PROC From Deleted....)      
End      
Return      
/*------------------------ Fin ----------------------*/
GO

CREATE Trigger [dbo].[TD_TXMVTO_CNTB_D02] On [dbo].[TXMVTO_CNTB]  
For Delete   
/*----------------------------------------------------------*/  
/*---- Empresa              : OFISIS S.A.  ----*/  
/*---- Cliente              : OFISIS S.A.  ----*/  
/*---- Sistema              : OFICONT   ----*/  
/*---- M>dulo               : EMPRESA   ----*/  
/*---- Programa             : MAYORIZACION  ----*/  
/*---- Script               : TD_TXMVTO_CNTB_D02 ----*/  
/*---- Nombre TR            : TD_TXMVTO_CNTB_D02 ----*/  
/*---- Desarrollado por     : LGP   ----*/  
/*---- Fecha Creaci>n       : 13/02/2003  ----*/  
/*---- Base de Datos        : SQL   ----*/  
/*---- Versi>n              : 8.0   ----*/  
/*---- Invoca a SP          :    ----*/  
/*----------------------------------------------------------*/  
/*---- Modificado 1 por     : PERCY GARCIA  ----*/  
/*---- Fecha Modificaci>n   : 19/02/2004  ----*/  
/*---- Detalle Modificaci>n : COMENTO VALID. DIF CAMBIO ----*/  
/*----------------------------------------------------------*/  
/*---- Modificado 2 por     : PERCY GARCIA  ----*/  
/*---- Fecha Modificaci>n   : 03/03/2004  ----*/  
/*---- Detalle Modificaci>n : CORRECCION TRIGGER NU_PROC----*/  
/*---- TIPO DATO UNIDAD @CSCO_UNID_CNTB, VARiables IMP. ----*/  
/*---- Y ASTO CIERRE     ----*/  
/*----------------------------------------------------------*/  
/*---- Modificado 3 por     : Yessica Morales  ----*/  
/*---- Fecha Modificaci>n   : 18/06/2004  ----*/  
/*---- Detalle Modificaci>n : Mod. Default Usuario ----*/  
/*----------------------------------------------------------*/  
/*---------------------------------------------------------------------*/  
/*----- Modificado 5 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 30/06/2006                             -----*/  
/*----- Detalle Modifica : se aumento el tamaño de la @VSNV_QUIE_CNTA de 10 a 40-----*/  
/*---------------------------------------------------------------------*/  
/*---- Comentarios: Valida Fecha de Proceso  ----*/  
/*---- Drop Trigger TD_TXMVTO_CNTB_D02   COMMIT  ----*/  
/*----------------------------------------------------------*/  
/*---- Se ejecuta con el INSERT de la Tabla  ----*/  
/*----------------------------------------------------------*/  
As  
Begin  
Declare   
--------------- Variables Validacion Fechas de Proceso -------------------  
  @CSCO_EMPR       TD_VC_002,  
  @CNNU_CNTB_EMPR   TD_IN_001,  
  @CSCO_UNID_CNTB   TD_VC_003,  
  @CSCO_OPRC_CNTB      TD_VC_003,  
  @CNNU_ANNO            TD_IN_001,  
  @CNNU_MESE            TD_IN_001,  
  @CSNU_ASTO            TD_VC_010,  
  @CNNU_SECU  TD_IN_002,  
  @CDFE_ASTO_CNTB   TD_DT_001,  
  @CSCO_CNTA_EMPR TD_VC_020,  
  @CSTI_AUXI_EMPR       TD_VC_001,  
  @CSCO_AUXI_EMPR       TD_VC_020,  
  @CSCO_MONE   TD_VC_003,  
  @CSTI_OPER  TD_VC_003,  
  @CNIM_MVTO_ORIG TD_NU_016_004,  
  @CNIM_MVTO_CNTB TD_NU_016_004,  
  @VNIM_CARG_ORIG TD_NU_016_004,  
  @VNIM_ABON_ORIG TD_NU_016_004,  
  @VNIM_CARG_CNTB TD_NU_016_004,  
  @VNIM_ABON_CNTB TD_NU_016_004,  
  @CSSI_MVTO_CNTB       TD_VC_003,  
  @CSCO_ORDE_SERV TD_VC_020,  
  @VSST_CIER_CNTB TD_VC_001,  
  @VSDE_ERRO  TD_VC_050,  
--------------- Variables Gestion -------------------  
  @VSST_GEST_LINE  TD_VC_001,  
  @VSST_ASIE_GEST  TD_VC_003,  
  @VSCO_OPRC_CNTB  TD_VC_003,  
  @VSCO_CNTA_CONT  TD_VC_020,  
  @VSCO_CNTA_DEST  TD_VC_020,  
--------------- Variables Mayorizacion -------------------  
  @VSPR_DATO  TD_VC_020,  
-- Variables Loop --  
  @VNNV_INFO_CNTA       TD_IN_001,  
  @VSNV_QUIE_CNTA       TD_VC_040,  
  @VNCA_INIC            TD_IN_001,  
  @VNCA_LONG            TD_IN_001,  
  @VNCA_LONG_AUXI       TD_IN_001,  
  @VNNV_AUXI            TD_IN_001,  
  @VNNU_FINA            TD_IN_001,  
--------------- Variables Actualizacion Datos Reales -------------------  
  @CNNU_SECU_MVTO TD_IN_001,  
  @VNIM_MVTO_ORIG TD_NU_016_004,  
  @VNIM_MVTO_CNTB TD_NU_016_004,  
  @VSDE_CADE_IMPR TD_VC_020,  
  @VSCO_MONE_CNTB TD_VC_003,  
  @CNNU_REGI_EMPR TD_IN_001,  
  @CSCO_PART  TD_VC_020,  
  @CNPO_APLI  TD_NU_015_006,  
  @CSCO_DOMI  TD_VC_003,  
  @CNTI_SIGN_CONT TD_IN_001,  
  @CNTI_OPER_ARIT TD_IN_001,  
  @CSCO_MONE_PART TD_VC_003,  
  @CSTI_CAMB_PART TD_VC_003,   
  @VNIM_MVTO  TD_NU_016_004,  
  @VNIM_MVTO_ACUM TD_NU_016_004,  
  @VNPO_APLI_DOMI TD_NU_015_006,  
  @CSTI_CAMB  TD_VC_003,  
  @CNFA_CAMB  TD_NU_015_006,   
  @VSST_PRES  TD_VC_001  
  
--Solo se Ejecuta si el numero de Proceso es Nulo o Cero  
If Exists( Select NU_PROC From Deleted Where  NU_PROC Is Null Or NU_PROC = 0 )  
Begin  
  
If Not Exists( Select ST_MASI From Deleted Where  ST_MASI = 'S' )
Begin

If Exists( Select ST_GEST From Deleted  
           Where ( ST_GEST = 'N'  ) Or ( ST_GEST = 'S' And ST_OTRS Is NULL ) )  
Begin  
  
-- No debe entrar si el asiento a Insertar es de Ajuste por Dif. Cambio en Batch  
/*If Not Exists ( Select CO_EMPR From Deleted T1    
    Where  ST_DIFE_CAMB = 'S' And ST_DIFE_MAYO = 'N' )    
Begin    */
  
--------------- Variables Mayorizacion -------------------  
  Declare CT_TXMVTO_CNTB_D02_1 Cursor  
  For  
  Select  T1.CO_EMPR,       T1.NU_CNTB_EMPR,  T1.CO_UNID_CNTB,  T1.CO_OPRC_CNTB,  T1.NU_ANNO,   
  T1.NU_MESE,     T1.NU_ASTO,       T1.NU_SECU,       T1.CO_CNTA_EMPR,  T1.TI_AUXI_EMPR,   
  T1.CO_AUXI_EMPR,  T1.TI_OPER,     Round(T1.IM_MVTO_ORIG, 2),  Round(T1.IM_MVTO_CNTB, 2),  T1.SI_MVTO_CNTB,
  LTRIM(RTRIM(T1.CO_ORDE_SERV))
  From  DELETED T1, TASALD_EMPR T2  
  Where T1.CO_EMPR = T2.CO_EMPR  
  And   T1.CO_UNID_CNTB = T2.CO_UNID_CNTB  
  And   T1.NU_CNTB_EMPR = T2.NU_CNTB_EMPR  
  And   T1.NU_ANNO = T2.NU_ANNO  
  And   T1.NU_MESE = T2.NU_MESE  
  And   T1.CO_CNTA_EMPR = T2.CO_CNTA_EMPR  
  And   T2.TI_AUXI_EMPR IS NULL  
  And   T2.CO_AUXI_EMPR IS NULL  
  And   T2.CO_ORDE_SERV IS NULL  
  And   T1.CO_OPRC_CNTB NOT IN (SELECT T3.CO_OPRC_CNTB FROM TTIDEN_OPER T3  
    where T1.CO_EMPR = T3.CO_EMPR   
    And T1.NU_CNTB_EMPR = T3.NU_CNTB_EMPR  
    And T3.ID_OPRC In ( '012', '013'))  
  
  Open  CT_TXMVTO_CNTB_D02_1  
  Fetch CT_TXMVTO_CNTB_D02_1 Into  
   @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB,  
   @CSCO_OPRC_CNTB, @CNNU_ANNO,  @CNNU_MESE,  
   @CSNU_ASTO,  @CNNU_SECU,  @CSCO_CNTA_EMPR,  
   @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_OPER,  
   @CNIM_MVTO_ORIG,   @CNIM_MVTO_CNTB, @CSSI_MVTO_CNTB,  
   @CSCO_ORDE_SERV  
  
  While @@Fetch_Status = 0  
  Begin  
    If  @@Fetch_Status < 0  
      Begin  
        Close CT_TXMVTO_CNTB_D02_1  
        Deallocate CT_TXMVTO_CNTB_D02_1  
      End  
-- Inicio  
    If @CSTI_AUXI_EMPR = ''  
       Select @CSTI_AUXI_EMPR = NULL  
    If @CSCO_AUXI_EMPR = ''  
       Select @CSCO_AUXI_EMPR = NULL  
    If @CSCO_ORDE_SERV = ''   
       Select @CSCO_ORDE_SERV = NULL  
  
    If @CSTI_OPER = 'CAR'  
      Begin  
 Select @VNIM_ABON_ORIG = 0  
 Select @VNIM_ABON_CNTB = 0  
        Select @VNIM_CARG_ORIG = @CNIM_MVTO_ORIG  
        Select @VNIM_CARG_CNTB = @CNIM_MVTO_CNTB  
      End  
    Else If @CSTI_OPER = 'ABO'  
      Begin  
        Select @VNIM_CARG_ORIG = 0  
        Select @VNIM_CARG_CNTB = 0  
 Select @VNIM_ABON_ORIG = @CNIM_MVTO_ORIG  
 Select @VNIM_ABON_CNTB = @CNIM_MVTO_CNTB  
      End  
  
    If @CSSI_MVTO_CNTB = 'APR'  
      Begin  
        Update TASALD_EMPR  
 	Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB,0), 2),  
      	IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB,0), 2),  
      IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG,0), 2) ,  
      IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG,0), 2) ,  
      CO_USUA_MODI = System_User,  FE_USUA_MODI = GETDATE()  
 WHERE CO_EMPR = @CSCO_EMPR  
          AND CO_UNID_CNTB = @CSCO_UNID_CNTB  
   AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
   AND NU_ANNO = @CNNU_ANNO  
    AND NU_MESE = @CNNU_MESE  
          AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
   AND TI_AUXI_EMPR IS NULL  
   AND CO_AUXI_EMPR IS NULL  
   AND CO_ORDE_SERV IS NULL  
        -- Caso Cuenta - SI Auxiliar - SI Orden Servicio    
        If @CSTI_AUXI_EMPR IS NOT NULL AND @CSCO_AUXI_EMPR IS NOT NULL AND @CSCO_ORDE_SERV IS NOT NULL   
   Begin   
            Update TASALD_EMPR  
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB,0), 2) ,  
          IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB,0), 2) ,  
          IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG,0), 2) ,  
          IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG,0), 2) ,  
   CO_USUA_MODI = System_User,  FE_USUA_MODI = GETDATE()  
       WHERE CO_EMPR = @CSCO_EMPR  
            AND CO_UNID_CNTB = @CSCO_UNID_CNTB  
            AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
            AND NU_ANNO = @CNNU_ANNO   
            AND NU_MESE = @CNNU_MESE  
            AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
            AND TI_AUXI_EMPR = @CSTI_AUXI_EMPR  
            AND CO_AUXI_EMPR = @CSCO_AUXI_EMPR  
     AND CO_ORDE_SERV = @CSCO_ORDE_SERV  
   End  
        -- Caso Cuenta - SI Auxiliar - NO Orden Servicio    
        If @CSTI_AUXI_EMPR IS NOT NULL AND @CSCO_AUXI_EMPR IS NOT NULL AND @CSCO_ORDE_SERV IS NULL   
   Begin   
            Update TASALD_EMPR  
     Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB,0), 2) ,  
          IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB,0), 2) ,  
          IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG,0), 2) ,  
          IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG,0), 2) ,  
   CO_USUA_MODI = System_User,  FE_USUA_MODI = GETDATE()  
            WHERE CO_EMPR = @CSCO_EMPR  
            AND CO_UNID_CNTB = @CSCO_UNID_CNTB  
            AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
            AND NU_ANNO = @CNNU_ANNO  
            AND NU_MESE = @CNNU_MESE  
            AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
            AND TI_AUXI_EMPR = @CSTI_AUXI_EMPR  
            AND CO_AUXI_EMPR = @CSCO_AUXI_EMPR  
            AND CO_ORDE_SERV IS NULL  
   End  
        -- Caso Cuenta - NO Auxiliar - CON Orden Servicio    
 If @CSTI_AUXI_EMPR IS NULL AND @CSCO_AUXI_EMPR IS NULL AND @CSCO_ORDE_SERV IS NOT NULL  
   Begin   
            Update TASALD_EMPR  
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB,0), 2) ,  
          IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB,0), 2) ,  
          IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG,0), 2) ,  
          IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG,0), 2) ,  
   CO_USUA_MODI = System_User,  FE_USUA_MODI = GETDATE()  
            WHERE CO_EMPR = @CSCO_EMPR  
            AND CO_UNID_CNTB = @CSCO_UNID_CNTB  
            AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
            AND NU_ANNO = @CNNU_ANNO  
            AND NU_MESE = @CNNU_MESE  
            AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
            AND TI_AUXI_EMPR Is NULL  
            AND CO_AUXI_EMPR Is NULL  
            AND CO_ORDE_SERV = @CSCO_ORDE_SERV  
   End  
  
        -- INICIO LOOP  
 Select @VNNV_INFO_CNTA = NV_INFO_CNTA,  
               @VSNV_QUIE_CNTA = NV_QUIE_CNTA    
        From   TMPARA_CONT  
        Where  CO_EMPR = @CSCO_EMPR  
  
        Select @VNCA_LONG = DataLength(Rtrim(@VSNV_QUIE_CNTA)) - 1  
        Select @VNNU_FINA = 1  
  
 -- Empieza a Trabajar  
        While @VNNU_FINA = 1  
        Begin  
          -- Selecciona   
          Select @VNCA_INIC = @VNCA_LONG - 2  
          Select @VNCA_LONG = @VNCA_LONG - 2  
          Select @VNNV_AUXI = Convert(Int, Substring(@VSNV_QUIE_CNTA,@VNCA_INIC,2))  
          -- El Nivel Detalle ya existe y si es cero no se hace nada  
          If ( @VNNV_AUXI < @VNNV_INFO_CNTA ) And ( @VNNV_AUXI > 0 )  
          Begin  
            -- Inserta en la Tabla de Saldos  
            Update TASALD_EMPR  
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB,0), 2) ,  
               IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB,0), 2) ,  
          CO_USUA_MODI = System_User,  FE_USUA_MODI = GETDATE()  
     WHERE CO_EMPR = @CSCO_EMPR  
            AND CO_UNID_CNTB = @CSCO_UNID_CNTB  
     AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
     AND NU_ANNO = @CNNU_ANNO  
     AND NU_MESE = @CNNU_MESE  
     AND CO_CNTA_EMPR = Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI)  
     AND TI_AUXI_EMPR IS NULL  
     AND CO_AUXI_EMPR IS NULL  
     AND CO_ORDE_SERV IS NULL  
     AND Datalength(CO_CNTA_EMPR) = @VNNV_AUXI  
          End  
          If @VNCA_INIC <= 0  
            Select @VNNU_FINA = 0         
        End --  While @VNNU_FINA = 1  
-- FIN LOOP  
      End --  If @CSSI_MVTO_CNTB = 'APR'  
-- Fin  
  Fetch CT_TXMVTO_CNTB_D02_1 Into  
   @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB,  
   @CSCO_OPRC_CNTB, @CNNU_ANNO,  @CNNU_MESE,  
   @CSNU_ASTO,  @CNNU_SECU,  @CSCO_CNTA_EMPR,  
   @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_OPER,  
   @CNIM_MVTO_ORIG,   @CNIM_MVTO_CNTB, @CSSI_MVTO_CNTB,  
   @CSCO_ORDE_SERV  
   
  End  -- end del while @@Fetch_Status = 0  
  
  Close CT_TXMVTO_CNTB_D02_1  
  Deallocate CT_TXMVTO_CNTB_D02_1  
  
 End --- If Exists( Select ST_GEST From Deleted  

 End --- If Not Exists( Select ST_MASI From Deleted
    
 End --(If Exists( Select NU_PROC From Deleted....)  
  
End  
Return  
/*------------------------ Fin ----------------------*/
GO

CREATE Trigger [dbo].[TD_TXMVTO_CNTB_D03] On [dbo].[TXMVTO_CNTB]  
For Delete  
/*---------------------------------------------------------*/  
/*---- Empresa              : OFISIS S.A.              ----*/  
/*---- Cliente              : OFISIS S.A.              ----*/  
/*---- Sistema              : OFICONT                  ----*/  
/*---- M>dulo               : Empresa        	       ----*/  
/*---- Programa             : Actualiza Datos Reales   ----*/  
/*---- Script               :                          ----*/  
/*---- Nombre TR            : TD_TXMVTO_CNTB_D03       ----*/  
/*---- Desarrollado por     : LGP                      ----*/  
/*---- Fecha Creaci>n       : 25/10/2004               ----*/  
/*---- Base de Datos        : SQL                      ----*/  
/*---- Versi>n              : 8.0                      ----*/  
/*---- Invoca a SP          :                          ----*/  
/*---------------------------------------------------------*/  
/*---------------------------------------------------------*/  
/*---- Se ejecuta con el INSERT de la Tabla            ----*/  
/*---------------------------------------------------------*/  
As
Begin  
Declare   
  @CSCO_EMPR      TD_VC_002,  
  @CNNU_CNTB_EMPR TD_IN_001,  
  @CSCO_UNID_CNTB TD_VC_003,  
  @CSCO_OPRC_CNTB TD_VC_003,  
  @CNNU_ANNO      TD_IN_001,  
  @CNNU_MESE      TD_IN_001,  
  @CSNU_ASTO      TD_VC_010,  
  @CNNU_SECU  	  TD_IN_002,  
  @CDFE_ASTO_CNTB TD_DT_001,  
  @CSCO_CNTA_EMPR TD_VC_020,  
  @CSTI_AUXI_EMPR TD_VC_001,  
  @CSCO_AUXI_EMPR TD_VC_020,  
  @CSCO_MONE      TD_VC_003,  
  @CSTI_OPER      TD_VC_003,  
  @CNIM_MVTO_ORIG TD_NU_016_004,  
  @CNIM_MVTO_CNTB TD_NU_016_004,  
  @VNIM_CARG_ORIG TD_NU_016_004,  
  @VNIM_ABON_ORIG TD_NU_016_004,  
  @VNIM_CARG_CNTB TD_NU_016_004,  
  @VNIM_ABON_CNTB TD_NU_016_004,  
  @CSSI_MVTO_CNTB TD_VC_003,  
  @CSCO_ORDE_SERV TD_VC_020,  
  @VSPR_DATO  	  TD_VC_020,  
  @CSSI_MVTO_ANTE TD_VC_003,  
-- Variables Loop --  
  @VNNV_INFO_CNTA TD_IN_001,  
  @VSNV_QUIE_CNTA TD_VC_010,  
  @VNCA_INIC      TD_IN_001,  
  @VNCA_LONG      TD_IN_001,  
  @VNCA_LONG_AUXI TD_IN_001,  
  @VNNV_AUXI      TD_IN_001,  
  @VNNU_FINA      TD_IN_001,  
------------------- Variables Actualiza Datos Reales ----------------------------  
  @CNNU_SECU_MVTO TD_IN_002,  
  @VNIM_MVTO_ORIG TD_NU_016_004,  
  @VNIM_MVTO_CNTB TD_NU_016_004,  
  @VSDE_CADE_IMPR TD_VC_020,  
  @VSCO_MONE_CNTB TD_VC_003,  
  @CNNU_REGI_EMPR TD_IN_001,  
  @CSCO_PART      TD_VC_020,  
  @CNPO_APLI      TD_NU_015_006,  
  @CSCO_DOMI      TD_VC_003,  
  @CNTI_SIGN_CONT TD_IN_001,  
  @CNTI_OPER_ARIT TD_IN_001,  
  @CSCO_MONE_PART TD_VC_003,  
  @CSTI_CAMB_PART TD_VC_003,   
  @VNIM_MVTO      TD_NU_016_004,  
  @VNIM_MVTO_ACUM TD_NU_016_004,  
  @VNIM_MVTO_TOTA TD_NU_016_004,  
  @VNPO_APLI_DOMI TD_NU_015_006,  
  @CSTI_CAMB      TD_VC_003,  
  @CNFA_CAMB      TD_NU_015_006,  
  @VSST_PRES      TD_VC_001,  
  @CSTI_DOCU      TD_VC_003,  
  @CSNU_DOCU      TD_VC_020,  
  @CDFE_DOCU      TD_DT_001,  
  @VNNU_SECU      TD_IN_002,
  @VNIM_ORIG_ANTE TD_NU_016_004,
  @VNIM_CNTB_ANTE TD_NU_016_004,
  @VNFA_CMPR_OFIC TD_NU_015_006,
  @VNFA_VNTA_OFIC TD_NU_015_006
  
--Solo se Ejecuta si el numero de Proceso es Nulo o Cero  

If Exists( Select NU_PROC From Deleted  
           Where  NU_PROC Is Null or NU_PROC = 0)  
Begin  
------------------- Actualiza Datos Reales ---------------------------------------  
--/*****************  
  Declare CT_TXMVTO_CNTB_D03_1 Cursor  
  For  
  Select  T1.CO_EMPR, T1.NU_CNTB_EMPR, T1.CO_UNID_CNTB, T1.NU_ANNO, T1.NU_MESE, T1.NU_SECU,  
          T1.CO_CNTA_EMPR, T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR, T1.CO_MONE,  T1.TI_OPER,  
	  Round(T1.IM_MVTO_ORIG, 2), Round(T1.IM_MVTO_CNTB, 2), LTRIM(RTRIM(T1.CO_ORDE_SERV)), 
	  T1.SI_MVTO_CNTB, T1.FE_ASTO_CNTB, T1.TI_CAMB, T1.FA_CAMB, T1.NU_ASTO, T1.CO_OPRC_CNTB, 
	  T1.TI_DOCU, T1.NU_DOCU, T1.FE_DOCU  
  From Deleted T1
  Where T1.CO_CNTA_EMPR in (Select Isnull(Max(T2.CO_CNTA_EMPR), '') From OFIPRES..TDPART_CONT T2
	Where T2.CO_EMPR = T1.CO_EMPR
	And T2.NU_ANNO = T1.NU_ANNO
	And T2.NU_MESE = T1.NU_MESE
	And T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR)
   And  T1.SI_MVTO_CNTB = 'APR'
     
  Open  CT_TXMVTO_CNTB_D03_1  
  Fetch CT_TXMVTO_CNTB_D03_1 Into  
   @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CNNU_ANNO, @CNNU_MESE, @CNNU_SECU_MVTO,  
   @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_MONE, @CSTI_OPER, @CNIM_MVTO_ORIG,  
   @CNIM_MVTO_CNTB, @CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, @CDFE_ASTO_CNTB, @CSTI_CAMB, @CNFA_CAMB,  
   @CSNU_ASTO, @CSCO_OPRC_CNTB, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU  
  While @@Fetch_Status = 0  
  Begin  
   Select @VSST_PRES = ST_PRES  
     From TMEMPR  
    Where CO_EMPR = @CSCO_EMPR  

   If @@Fetch_Status < 0 Or @VSST_PRES = 'N'  
    Begin  
        Close CT_TXMVTO_CNTB_D03_1  
        Deallocate CT_TXMVTO_CNTB_D03_1  
        Return  
    End  
   If @VSST_PRES = 'S' -- Si Sistema Presupuesto  
   Begin  
    If @CNIM_MVTO_CNTB IS Null 
       Select @CNIM_MVTO_CNTB = 0  

    If @CSTI_OPER = 'CAR'  
      Begin  
        Select @VNIM_MVTO_ORIG = @CNIM_MVTO_ORIG  
        Select @VNIM_MVTO_CNTB = @CNIM_MVTO_CNTB  
      End  
    Else If @CSTI_OPER = 'ABO'  
      Begin  
        Select @VNIM_MVTO_ORIG = (-1)* @CNIM_MVTO_ORIG  
        Select @VNIM_MVTO_CNTB = (-1)* @CNIM_MVTO_CNTB  
      End  

    Select @VSCO_MONE_CNTB = CO_MONE  
      From TTCNTB_EMPR  
     Where CO_EMPR = @CSCO_EMPR  
       And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
  
    Select  @CSSI_MVTO_ANTE = SI_MVTO_CNTB
     From   Deleted  
     Where  CO_EMPR = @CSCO_EMPR  
     And    NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
     And    CO_UNID_CNTB = @CSCO_UNID_CNTB  
     And    CO_OPRC_CNTB = @CSCO_OPRC_CNTB  
     And    NU_ANNO = @CNNU_ANNO  
     And    NU_MESE = @CNNU_MESE  
     And    NU_ASTO = @CSNU_ASTO  
     And    NU_SECU = @CNNU_SECU_MVTO   

    --- Cursor 2   
    Declare CT_TXMVTO_CNTB_U02_3 Cursor  
    For      
     Select T1.NU_REGI_EMPR, T1.CO_PART, T1.NU_SECU, T1.PO_APLI, T1.CO_DOMI,  
     T1.TI_SIGN_CONT, T1.TI_OPER_ARIT, T2.CO_MONE, T2.TI_CAMB  
     From OFIPRES..TDPART_CONT T1, OFIPRES..TMPART T2  
     Where T1.CO_EMPR = @CSCO_EMPR  
     And T1.NU_ANNO = @CNNU_ANNO  
     And T1.NU_MESE = @CNNU_MESE  
     And T1.NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
     And (Isnull(T1.CO_UNID_CNTB,'%') Like Isnull(Rtrim(Ltrim(@CSCO_UNID_CNTB)), '%') Or T1.CO_UNID_CNTB Is null)  
     And (Isnull(T1.CO_CNTA_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSCO_CNTA_EMPR)), '%') Or T1.CO_CNTA_EMPR Is null)  
     And (Isnull(T1.TI_AUXI_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSTI_AUXI_EMPR)), '%') Or T1.TI_AUXI_EMPR Is null)  
     And (Isnull(T1.CO_AUXI_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSCO_AUXI_EMPR)), '%') Or T1.CO_AUXI_EMPR Is null)  
     And (Isnull(T1.CO_ORDE_SERV,'%') Like Isnull(Rtrim(Ltrim(@CSCO_ORDE_SERV)), '%') Or T1.CO_ORDE_SERV Is null)  
     And T2.CO_EMPR = T1.CO_EMPR  
     And T2.NU_ANNO = T1.NU_ANNO  
     And T2.CO_PART = T1.CO_PART  
     And T2.TI_SITU = 'ACT'  
  
    Open  CT_TXMVTO_CNTB_U02_3  
    Fetch CT_TXMVTO_CNTB_U02_3 Into  
     @CNNU_REGI_EMPR, @CSCO_PART, @CNNU_SECU, @CNPO_APLI, @CSCO_DOMI, @CNTI_SIGN_CONT,@CNTI_OPER_ARIT,@CSCO_MONE_PART,  
     @CSTI_CAMB_PART   
    While @@Fetch_Status = 0  
    Begin  
     If Not Exists (Select CO_PART  
       From OFIPRES..TRSIST_PART  
       Where CO_EMPR = @CSCO_EMPR  
         And NU_ANNO = @CNNU_ANNO  
         And CO_PART = @CSCO_PART)  
      Begin -- Si lee de Contabilidad  
 --- Valida Monedas - Calcula importes  
     If @VSCO_MONE_CNTB = @CSCO_MONE_PART -- moneda contb = moneda partida  
        Select @VNIM_MVTO = @VNIM_MVTO_ORIG  
     If @VSCO_MONE_CNTB = @CSCO_MONE     -- moneda contb = moneda movimiento  
     Begin  
       If @CSCO_MONE = @CSCO_MONE_PART  -- moneda movimiento = moneda partida  
          Select @VNIM_MVTO = @VNIM_MVTO_ORIG  
       If @CSCO_MONE != @CSCO_MONE_PART  -- moneda movimiento != moneda partida  
         Begin
          If @CNFA_CAMB = 1
          Begin
            Select @VNFA_CMPR_OFIC = Isnull(Max(FA_CMPR_OFIC), 1), @VNFA_VNTA_OFIC = Isnull(Max(FA_VNTA_OFIC), 1)
            From TCFACT_CAMB
            Where co_mone = @CSCO_MONE_PART
 	     And co_mone_base = @VSCO_MONE_CNTB
 	     And fe_camb = @CDFE_ASTO_CNTB
     
           If @CSTI_CAMB = 'COM'
             Select @CNFA_CAMB = @VNFA_CMPR_OFIC
           Else
             Select @CNFA_CAMB = @VNFA_VNTA_OFIC
          End

          Exec SP_CONV_MONE_Q03 @CSCO_EMPR, @CSCO_MONE, @CSCO_MONE_PART, @CSTI_CAMB, @CSTI_CAMB_PART, @CNFA_CAMB, 
	       @CDFE_ASTO_CNTB, @VNIM_MVTO_ORIG, @VNIM_MVTO OUTPUT
         End
     End

     If @VSCO_MONE_CNTB != @CSCO_MONE     -- moneda contb != moneda movimiento  
     Begin  
      If @CSCO_MONE = @CSCO_MONE_PART   -- moneda movimiento = moneda partida  
       Select @VNIM_MVTO = @VNIM_MVTO_ORIG  
      If @CSCO_MONE != @CSCO_MONE_PART   -- moneda movimiento != moneda partida  
        Begin
         If @CNFA_CAMB = 1
          Begin
            Select @VNFA_CMPR_OFIC = Isnull(Max(FA_CMPR_OFIC), 1), @VNFA_VNTA_OFIC = Isnull(Max(FA_VNTA_OFIC), 1)
            From TCFACT_CAMB
            Where co_mone = @CSCO_MONE_PART
	     And co_mone_base = @VSCO_MONE_CNTB
	     And fe_camb = @CDFE_ASTO_CNTB
     
          If @CSTI_CAMB = 'COM'
           Select @CNFA_CAMB = @VNFA_CMPR_OFIC
          Else
           Select @CNFA_CAMB = @VNFA_VNTA_OFIC
         End
        Exec SP_CONV_MONE_Q03 @CSCO_EMPR, @CSCO_MONE, @CSCO_MONE_PART, @CSTI_CAMB, @CSTI_CAMB_PART, @CNFA_CAMB, 
	     @CDFE_ASTO_CNTB, @VNIM_MVTO_ORIG, @VNIM_MVTO OUTPUT
        End
     End  

 -- Extrae porcentaje de Dominio  
 Select @VNPO_APLI_DOMI = Max(PO_APLI)  
   From OFIPRES..TMPRES_DOMI  
  Where CO_EMPR = @CSCO_EMPR  
    And NU_ANNO = @CNNU_ANNO  
    And CO_DOMI = @CSCO_DOMI  

 If @VNPO_APLI_DOMI IS NULL Select @VNPO_APLI_DOMI = 100  
   -- Realiza los calculos  
   Select @VNIM_MVTO = @VNIM_MVTO * (@VNPO_APLI_DOMI /100) -- Aplica % dominio  
   Select @VNIM_MVTO = @VNIM_MVTO * (@CNPO_APLI /100)  -- Aplica % configurado  
   Select @VNIM_MVTO = @VNIM_MVTO * (@CNTI_SIGN_CONT)  -- Aplica Signo - naturaleza  
   Select @VNIM_MVTO_ACUM = @VNIM_MVTO * (@CNTI_OPER_ARIT) -- Aplica Acumulador  
 
 If @VNIM_MVTO_ACUM Is Null Select @VNIM_MVTO_ACUM = 0  
  
 --Actualiza datos Reales - TDPART_CONT  
  Update OFIPRES..TDPART_CONT   
     Set IM_CONT = Isnull(IM_CONT, 0)- @VNIM_MVTO_ACUM  
   Where CO_EMPR = @CSCO_EMPR  
     And NU_ANNO = @CNNU_ANNO  
     And NU_MESE = @CNNU_MESE  
     And NU_REGI_EMPR = @CNNU_REGI_EMPR  
     And CO_PART = @CSCO_PART  
     And NU_SECU = @CNNU_SECU

 --Actualiza datos Reales - TAPART_MENS  
  Update OFIPRES..TAPART_MENS  
     Set IM_EJEC = Isnull(IM_EJEC, 0)- @VNIM_MVTO_ACUM  
   Where CO_EMPR = @CSCO_EMPR  
     And NU_ANNO = @CNNU_ANNO  
     And NU_MESE = @CNNU_MESE  
     And NU_REGI_EMPR = @CNNU_REGI_EMPR  
     And CO_PART = @CSCO_PART  
  
  Delete From OFIPRES..TDMVTO_PART  
  Where CO_EMPR = @CSCO_EMPR  
  And NU_ANNO = @CNNU_ANNO  
  And NU_MESE = @CNNU_MESE  
  And NU_REGI_EMPR = @CNNU_REGI_EMPR  
  And CO_PART = @CSCO_PART           
  And TI_ORIG_MVTO = 'EJE'  
  And CO_SIST_ORIG = 'OFICONT'  
  And NU_ASTO = @CSNU_ASTO  
  And IM_MVTO_ORIG = @CNIM_MVTO_ORIG  
  And IM_MVTO_CNTB = @CNIM_MVTO_CNTB  
-- End  
End  -- Fin Lee de Contabilidad  
 Fetch CT_TXMVTO_CNTB_U02_3 Into  
       @CNNU_REGI_EMPR, @CSCO_PART, @CNNU_SECU, @CNPO_APLI, @CSCO_DOMI, @CNTI_SIGN_CONT, @CNTI_OPER_ARIT, 
       @CSCO_MONE_PART, @CSTI_CAMB_PART  
End -- END WHILE @@Fetch_Status = 0 - CURSOR 2

   Close CT_TXMVTO_CNTB_U02_3  
   Deallocate CT_TXMVTO_CNTB_U02_3  
   End -- Fin si hay Sistema Presupuesto  
  Fetch CT_TXMVTO_CNTB_D03_1 Into  
   @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CNNU_ANNO, @CNNU_MESE, @CNNU_SECU_MVTO,  
   @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_MONE, @CSTI_OPER, @CNIM_MVTO_ORIG,  
   @CNIM_MVTO_CNTB, @CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, @CDFE_ASTO_CNTB, @CSTI_CAMB, @CNFA_CAMB,  
   @CSNU_ASTO, @CSCO_OPRC_CNTB, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU  
 End -- END WHILE @@Fetch_Status = 0  

  Close CT_TXMVTO_CNTB_D03_1  
  Deallocate CT_TXMVTO_CNTB_D03_1  
  End --(If Exists( Select NU_PROC From Deleted....)   
End  
Return  
/*------------------------ Fin ----------------------*/
GO

CREATE Trigger [dbo].[tI_TXMVTO_CNTB_I01] ON [dbo].[TXMVTO_CNTB]    
FOR INSERT    
/*-------------------------------------------------------------------*/    
/*----- Empresa           : OFISIS S.A.                          ----*/    
/*----- Cliente           : OFISIS S.A.                          ----*/    
/*----- Sistema           : Contabilidad                         ----*/    
/*----- Modulo            : Empresa                              ----*/    
/*----- Programa          : GESTION                              ----*/    
/*----- Nombre            : tI_TXMVTO_CNTB_I01                   ----*/    
/*----- Script            : TXMVTO_CNTB                          ----*/    
/*----- Desarrollado por  : Marco Acua                          ----*/    
/*----- Fecha             : 08/02/2003                           ----*/    
/*----- Base de Datos     : MS SQL Server                        ----*/    
/*----- Version BD        : 7.0                                  ----*/    
/*-------------------------------------------------------------------*/    
/*-------------------------------------------------------------------*/    
/*----- Modificado 1 por : PDGV                    ----*/    
/*----- Fecha Modifica   : 20/01/2004                            ----*/    
/*----- Detalle Modifica : UPDATE A LA TCFECH_PROC EN LA          ---*/    
/*----- OPERACION DE GESTION CASO PARAMETRIZADO COMO'COP'        ----*/    
/*-------------------------------------------------------------------*/    
/*-------------------------------------------------------------------*/    
/*----- Modificado 2 por : PDGV                    ----*/    
/*----- Fecha Modifica   : 19/02/2004                            ----*/    
/*----- Detalle Modifica : SE COMENTO VALID. PARA QUE NO HAGA GESTION PARA---*/    
/*----- EL ASIENTO  DE DIFERENCIA DE CAMBIO                      ----*/    
/*-------------------------------------------------------------------*/    
/*-------------------------------------------------------------------*/    
/*----- Modificado 3 por : PDGV                    ----*/    
/*----- Fecha Modifica   : 19/03/2004                            ----*/    
/*----- Detalle Modifica : se valido que se ejecute caso asto aprobado ---*/    
/*-------------------------------------------------------------------*/    
/*-------------------------------------------------------------------*/    
/*----- Modificado 4 por : PDGV                    ----*/    
/*----- Fecha Modifica   : 17/04/2004                            ----*/    
/*----- Detalle Modifica : GRABA ST_OTRS NULL  ---*/    
/*-------------------------------------------------------------------*/    
/*-------------------------------------------------------------------*/    
/*----- Modificado 5 por : PDGV                    ----*/    
/*----- Fecha Modifica   : 25/10/2004                            ----*/    
/*----- Detalle Modifica : GRABA ST_DIFE_CAMB  ---*/    
/*-------------------------------------------------------------------*/    
/*-------------------------------------------------------------------*/    
/*----- Modificado 5 por : PDGV                    ----*/    
/*----- Fecha Modifica   : 26/04/2004                            ----*/    
/*----- Detalle Modifica : valido que exista el periodo para la op. de gestion  ---*/    
/*-------------------------------------------------------------------*/    
/*-------------------------------------------------------------------*/    
/*----- Modificado 6 por : PDGV                    ----*/    
/*----- Fecha Modifica   : 27/02/2006                            ----*/    
/*----- Detalle Modifica : SE valido que en el insert tome la moneda del asto origen ---*/    
/*-------------------------------------------------------------------*/
/*---------------------------------------------------------------------*/  
/*----- Modificado 7 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 30/06/2006                             -----*/  
/*----- Detalle Modifica : se aumento el tamaño de la @VSNV_QUIE_CNTA de 10 a 40-----*/  
/*---------------------------------------------------------------------*/  
/*------------DROP Trigger tI_TXMVTO_CNTB_I01------------------------*/    
/*-------------------------------------------------------------------*/    
As    
Begin    
Declare    
@CSCO_EMPR       TD_VC_002,    
@CNNU_CNTB_EMPR   TD_IN_001,    
@CNNU_ANNO           TD_IN_001,    
@CNNU_MESE           TD_IN_001,    
@CNNU_SECU  TD_IN_002,    
@CSCO_MONE   TD_VC_003,    
-------- Variables Gesti>n en L-nea ---------    
@CSCO_CNTA_CONT  TD_VC_020_CNTA,    
@CSCO_CNTA_DEST  TD_VC_020_CNTA,    
@CSCO_CNTA_EMPR   TD_VC_020_CNTA,    
@CSCO_ORDE_SERV         TD_VC_020,    
@VNNU_SECU  TD_IN_002,    
@CDFE_ASTO_CNTB   TD_DT_001,    
@CSTI_CAMB  TD_VC_003,    
@CNFA_CAMB  TD_NU_015_006,    
@CNIM_MVTO_ORIG  TD_NU_016_004,    
@CNIM_MVTO_CNTB  TD_NU_016_004,    
@VSTI_OPER  TD_VC_003,    
@CSTI_OPER_CNTB  TD_VC_003,    
@CSDE_GLOS  TD_VC_100,    
@CSCO_OPRC_ORIG      TD_VC_003,    
@CSCO_UNID_ORIG         TD_VC_003,    
@CSNS_ASTO_ORIG         TD_VC_010,    
@CDFE_DOCU_VENC  TD_DT_001,    
@CNFA_CAMB_DIAR  TD_NU_015_006,    
@CDFE_DOCU_REFE  TD_DT_001,    
@VSCO_OPRC_GEST      TD_VC_003,    
@CNNU_PROC  TD_IN_001,    
@CNNU_PROC_SECU  TD_IN_001,    
@CSTI_AUXI_EMPR   TD_VC_001,    
@CSCO_AUXI_EMPR   TD_VC_020,    
@CSST_AUXI_EMPR       TD_VC_001,    
@VSST_AUXI_DEST       TD_VC_001,    
@VSST_AUXI_CONT       TD_VC_001,    
@VNFA_CMPR_OFIC         TD_NU_015_006,    
@VNFA_VNTA_OFIC         TD_NU_015_006,    
@VNFA_CAMB_DIAR         TD_NU_015_006,    
@VSCO_MONE  TD_VC_003,    
@VSCO_CNTA_DEST    TD_VC_020,    
@VSCO_CNTA_CONT     TD_VC_020,    
@VSST_CNTA_CAMB     TD_VC_003,    
@VSST_AUXI_0001         TD_VC_001,    
@VSST_AUXI_0002         TD_VC_001,    
@VSST_ASIE_GEST         TD_VC_003,    
@CSSI_MVTO_CNTB         TD_VC_003,    
@VSNU_ASTO              TD_VC_010,    
@VSNU_ASTO_0001         TD_VC_010,    
@VSST_GEST_LINE         TD_VC_001,    
@VSCO_OPRC_0001         TD_VC_003,    
@VSST_ASIE_APRO         TD_VC_001,    
@VSST_ORDE_0001         TD_VC_001,    
@VSST_ORDE_0002         TD_VC_001,    
@VSTI_AUXI_EMPR         TD_VC_001,    
@VSCO_AUXI_EMPR         TD_VC_020,    
@VSCO_ORDE_SERV         TD_VC_020,    
-------- Variables Fecha de Proceso ---------------    
@CSCO_UNID_CNTB         TD_VC_020,    
@CSCO_OPRC_CNTB         TD_VC_003,    
@CSNU_ASTO              TD_VC_010,    
@CSTI_OPER              TD_VC_003,    
@VNIM_CARG_ORIG         TD_NU_016_004,    
@VNIM_ABON_ORIG         TD_NU_016_004,    
@VNIM_CARG_CNTB         TD_NU_016_004,    
@VNIM_ABON_CNTB         TD_NU_016_004,    
@VSST_CIER_CNTB         TD_VC_001,    
@VSDE_ERRO              TD_VC_050,    
-------- Variables Mayorizaci>n en L-nea ---------    
@VSPR_DATO              TD_VC_020,    
@VNNV_INFO_CNTA         TD_IN_001,    
@VSNV_QUIE_CNTA         TD_VC_040,    
@VNCA_INIC              TD_IN_001,    
@VNCA_LONG              TD_IN_001,    
@VNCA_LONG_AUXI         TD_IN_001,    
@VNNV_AUXI              TD_IN_001,    
@VNNU_FINA              TD_IN_001,    
@VSCO_OPRC_CNTB         TD_VC_003,    
-------- Variables Actualiza Datos Reales ---------    
@CNNU_SECU_MVTO         TD_IN_001,    
@VNIM_MVTO_ORIG         TD_NU_016_004,    
@VNIM_MVTO_CNTB         TD_NU_016_004,    
@VSDE_CADE_IMPR         TD_VC_020,    
@VSCO_MONE_CNTB         TD_VC_003,    
@CNNU_REGI_EMPR         TD_IN_001,    
@CSCO_PART              TD_VC_020,    
@CNPO_APLI              TD_NU_015_006,    
@CSCO_DOMI              TD_VC_003,    
@CNTI_SIGN_CONT         TD_IN_001,    
@CNTI_OPER_ARIT         TD_IN_001,    
@CSCO_MONE_PART         TD_VC_003,    
@CSTI_CAMB_PART         TD_VC_003,    
@VNIM_MVTO              TD_NU_016_004,    
@VNIM_MVTO_ACUM         TD_NU_016_004,    
@VNPO_APLI_DOMI         TD_NU_015_006,    
@VSST_PRES              TD_VC_001,    
@CSTI_DOCU              TD_VC_003,    
@CSNU_DOCU              TD_VC_020,    
@CDFE_DOCU              TD_DT_001,    
@CSST_MODI_FLAG         TD_VC_001_SINO,     
@CSST_DIFE_CAMB         TD_VC_001,    
@CSST_DIFE_MAYO         TD_VC_001,     
    
@CSCO_USUA_CREA         TD_VC_008,    
@CSCO_USUA_MODI         TD_VC_008,    
@CDFE_USUA_CREA         TD_DT_001_SIST,    
@CDFE_USUA_MODI         TD_DT_001_SIST,  
@CSST_RECU  TD_VC_001_SINO  
    
--Solo se Ejecuta si el numero de Proceso es Nulo o Cero    
If Exists( Select NU_PROC From Inserted    
           Where  NU_PROC Is Null Or NU_PROC = 0 )    
Begin    
    
If Exists( Select ST_OTRS From INSERTED    
           Where  ST_OTRS Is Null  )    
Begin    
    
-- No debe entrar si el asiento a Insertar es de Ajuste por Dif. Cambio    
/*If Not Exists ( Select T1.CO_OPRC_CNTB From INSERTED T1    
Where  T1.CO_OPRC_CNTB In ( Select T2.CO_OPRC_CNTB    
                            From TTIDEN_OPER T2    
                            Where T2.CO_EMPR = T1.CO_EMPR    
                            And   T2.NU_CNTB_EMPR = T1.NU_CNTB_EMPR    
                            And   T2.ID_OPRC In ( '003','027' ) ) )    
Begin*/    
    
----------------------------- Validacion Fecha de Proceso     
----------------------------------------    
    
Declare CT_TXMVTO_CNTB_I01_1 Cursor    
For    
Select  CO_EMPR, NU_CNTB_EMPR,  CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,    
        NU_MESE, NU_ASTO,    NU_SECU,  CO_CNTA_EMPR,   SI_MVTO_CNTB    
From Inserted    
Where SI_MVTO_CNTB = 'APR'    
    
Open  CT_TXMVTO_CNTB_I01_1    
Fetch CT_TXMVTO_CNTB_I01_1 Into    
      @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB,    
      @CSCO_OPRC_CNTB,         @CNNU_ANNO,  @CNNU_MESE,    
      @CSNU_ASTO,  @CNNU_SECU,  @CSCO_CNTA_EMPR,    
      @CSSI_MVTO_CNTB    
    
While @@Fetch_Status = 0    
Begin    
  If @@Fetch_Status < 0    
    Begin    
      Close CT_TXMVTO_CNTB_I01_1    
      Deallocate CT_TXMVTO_CNTB_I01_1    
    End    
-- Inicio    
    
       Select @VSCO_OPRC_GEST = CO_OPRC_CNTB    
       From TTIDEN_OPER    
       Where CO_EMPR = @CSCO_EMPR    
       And   ID_OPRC = '011'    
       And   NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
    
     Select @VSST_CIER_CNTB = ST_CIER_CNTB    
     From  TCFECH_PROC    
      Where CO_EMPR = @CSCO_EMPR    
      And  NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
      And  CO_UNID_CNTB = @CSCO_UNID_CNTB    
--      And  CO_OPRC_CNTB = @CSCO_OPRC_CNTB    
      And  CO_OPRC_CNTB = @VSCO_OPRC_GEST    
      And  NU_ANNO = @CNNU_ANNO    
      And  NU_MESE = @CNNU_MESE    
    
   Select @VSST_ASIE_GEST = ST_ASIE_GEST, @VSST_GEST_LINE = ST_GEST_LINE    
   from TMPARA_CONT    
   Where CO_EMPR = @CSCO_EMPR    
    
  If (@VSST_CIER_CNTB Is NULL Or Rtrim(@VSST_CIER_CNTB) = '') And @VSST_ASIE_GEST = 'COP' And @VSST_GEST_LINE = 'S'    
    Begin    
      Select @VSDE_ERRO = 'El Periodo para la Operación Gestión No esta Aperturado'    
      RAISERROR 50000 @VSDE_ERRO    
      ROLLBACK TRANSACTION    
    End    
    
  If @VSST_CIER_CNTB = 'S'    
    Begin    
      Select @VSDE_ERRO = 'El periodo esta bloqueado'    
      RAISERROR 50000 @VSDE_ERRO    
      ROLLBACK TRANSACTION    
    End    
-- Fin    
Fetch CT_TXMVTO_CNTB_I01_1 Into    
      @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB,    
      @CSCO_OPRC_CNTB, @CNNU_ANNO,  @CNNU_MESE,    
      @CSNU_ASTO,  @CNNU_SECU,  @CSCO_CNTA_EMPR,    
      @CSSI_MVTO_CNTB    
End    
Close CT_TXMVTO_CNTB_I01_1    
Deallocate CT_TXMVTO_CNTB_I01_1    
    
    
----------------------------- Gestion     
------------------------------------------------------------    
    
    
Select @CSTI_AUXI_EMPR = Null    
Select @CSCO_AUXI_EMPR = Null    
    
Declare CT_TXMVTO_CNTB_I01_2 Cursor For    
Select  T1.CO_EMPR, T1.NU_CNTB_EMPR, T1.CO_UNID_CNTB, T1.CO_OPRC_CNTB, T1.NU_ASTO, T1.NU_SECU,    
 T1.FE_ASTO_CNTB, T1.CO_CNTA_EMPR, T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR, T1.CO_MONE, T1.TI_CAMB,    
 T1.FA_CAMB, T1.TI_OPER, Round(T1.IM_MVTO_ORIG, 2), Round(T1.IM_MVTO_CNTB, 2), T1.DE_GLOS, T1.SI_MVTO_CNTB,    
 T1.FE_DOCU_VENC, T1.FA_CAMB_DIAR, T1.FE_DOCU_REFE, T1.NU_PROC, T1.NU_PROC_SECU, LTRIM(RTRIM(T1.CO_ORDE_SERV)),    
 T1.NU_ANNO, T1.NU_MESE, T4.ST_MODI_FLAG, t1.ST_DIFE_CAMB, t1.ST_DIFE_MAYO, t1.CO_USUA_CREA, t1.CO_USUA_MODI,    
 T1.FE_USUA_CREA, T1.FE_USUA_MODI, T5.ST_RECU  
From INSERTED T1, TTIDEN_OPER T2, TTIDEN_OPER T3, TMOPRC_CNTB T4, TMPARA_CONT T5  
Where T1.SI_MVTO_CNTB = 'APR'    
And T2.CO_EMPR = T1.CO_EMPR    
And T2.NU_CNTB_EMPR = T1.NU_CNTB_EMPR    
And T2.ID_OPRC = '012'    
And T2.CO_OPRC_CNTB <> T1.CO_OPRC_CNTB    
And T3.CO_EMPR = T1.CO_EMPR    
And T3.NU_CNTB_EMPR = T1.NU_CNTB_EMPR    
And T3.ID_OPRC = '013'    
And T3.CO_OPRC_CNTB <> T1.CO_OPRC_CNTB    
And T4.CO_EMPR = T1.CO_EMPR    
And T4.CO_OPRC_CNTB = T1.CO_OPRC_CNTB    
And T5.CO_EMPR = T1.CO_EMPR    
  
Open CT_TXMVTO_CNTB_I01_2    
Fetch CT_TXMVTO_CNTB_I01_2 into    
 @CSCO_EMPR,@CNNU_CNTB_EMPR,@CSCO_UNID_ORIG, @CSCO_OPRC_ORIG, @CSNS_ASTO_ORIG,@CNNU_SECU,     
 @CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_MONE, @CSTI_CAMB,   
 @CNFA_CAMB, @CSTI_OPER_CNTB, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSDE_GLOS, @CSSI_MVTO_CNTB,     
 @CDFE_DOCU_VENC, @CNFA_CAMB_DIAR, @CDFE_DOCU_REFE, @CNNU_PROC, @CNNU_PROC_SECU, @CSCO_ORDE_SERV,   
 @CNNU_ANNO, @CNNU_MESE, @CSST_MODI_FLAG, @CSST_DIFE_CAMB, @CSST_DIFE_MAYO, @CSCO_USUA_CREA,   
 @CSCO_USUA_MODI, @CDFE_USUA_CREA, @CDFE_USUA_MODI, @CSST_RECU  
    
While @@Fetch_Status = 0    
  Begin    
   Select @VSST_ASIE_GEST = ST_ASIE_GEST, @VSST_GEST_LINE = ST_GEST_LINE    
   from TMPARA_CONT    
   Where CO_EMPR = @CSCO_EMPR    
    
   If @VSST_ASIE_GEST = 'COP'    
   Begin    
     If @VSST_GEST_LINE ='S'    
     Begin    
       Select @VSCO_CNTA_DEST = CO_CNTA_DEST,    
              @VSCO_CNTA_CONT = CO_CNTA_CONT,    
              @VSST_CNTA_CAMB = ST_CNTA_CAMB    
       From TMPLAN_EMPR    
       Where CO_EMPR = @CSCO_EMPR    
       And   CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
       And   NU_ANNO = 9999    
    
       If @VSCO_CNTA_DEST Is NULL Or @VSCO_CNTA_CONT Is NULL    
       Begin    
         Select @VSCO_CNTA_DEST = CO_CNTA_DEST, @VSCO_CNTA_CONT  = CO_CNTA_CONT    
         From TRAUXI_GEST    
         Where CO_EMPR = @CSCO_EMPR    
         And   CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
         And  TI_AUXI_EMPR = @CSTI_AUXI_EMPR    
         And  CO_AUXI_EMPR = @CSCO_AUXI_EMPR    
    
         Select  @VSST_CNTA_CAMB = ST_CNTA_CAMB    
         From TMPLAN_EMPR    
         Where CO_EMPR = @CSCO_EMPR    
         And  CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
         And  NU_ANNO = 9999    
       End    
    
       Select @VSST_AUXI_0001 = ST_AUXI_EMPR, @VSST_ORDE_0001 = ST_ORDE_SERV    
       From TMPLAN_EMPR    
       Where CO_EMPR = @CSCO_EMPR    
       And CO_CNTA_EMPR = @VSCO_CNTA_DEST      
       And NU_ANNO = 9999    
    
       Select @VSST_AUXI_0002 = ST_AUXI_EMPR, @VSST_ORDE_0002 = ST_ORDE_SERV    
       From TMPLAN_EMPR    
       Where CO_EMPR = @CSCO_EMPR    
       And CO_CNTA_EMPR = @VSCO_CNTA_CONT    
       And NU_ANNO = 9999    
    
       Select @VSCO_OPRC_GEST = CO_OPRC_CNTB    
       From TTIDEN_OPER    
       Where CO_EMPR = @CSCO_EMPR    
       And   ID_OPRC = '011'    
       And   NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
    
       Select @VSNU_ASTO = ISNULL(MAX(NU_ASTO),'0000000001')    
       From TXMVTO_CNTB    
       Where CO_EMPR = @CSCO_EMPR     
       And   NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
       And   CO_UNID_CNTB = @CSCO_UNID_ORIG    
       And   CO_OPRC_CNTB = @VSCO_OPRC_GEST    
       And   NU_ANNO = @CNNU_ANNO    
       And   NU_MESE = @CNNU_MESE    
    
       SELECT @VNNU_SECU = ISNULL(MAX(NU_SECU),0)    
       FROM TXMVTO_CNTB    
       WHERE CO_EMPR = @CSCO_EMPR    
       And   NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
       And   CO_UNID_CNTB = @CSCO_UNID_ORIG    
       And   CO_OPRC_CNTB = @VSCO_OPRC_GEST    
       And   NU_ANNO = @CNNU_ANNO    
       And   NU_MESE = @CNNU_MESE    
       And   NU_ASTO = @VSNU_ASTO    
    
 /*     Select @VSCO_MONE = CO_MONE    
       From TTCNTB_EMPR    
       Where CO_EMPR = @CSCO_EMPR    
       And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    */
  
       If @CSTI_OPER_CNTB = 'ABO'    
         Select @VSTI_OPER = 'CAR'    
       Else    
         Select @VSTI_OPER = 'ABO'    
    
       /*--- Para el Factor de Cambio Diario ---*/    
  
         Select @VNFA_CAMB_DIAR = @CNFA_CAMB_DIAR    
    
       If RTRIM(@VSCO_CNTA_CONT) IS NOT Null And RTRIM(@VSCO_CNTA_DEST) IS NOT Null    
       Begin    
         If @VSST_AUXI_0001= 'N'    
           Begin    
             Select @VSTI_AUXI_EMPR = NULL    
             Select @VSCO_AUXI_EMPR = NULL    
           End    
         Else    
           Begin    
             Select @VSTI_AUXI_EMPR = @CSTI_AUXI_EMPR    
             Select @VSCO_AUXI_EMPR = @CSCO_AUXI_EMPR    
           End    
    
         If @VSST_ORDE_0001 = 'N'    
           Select @VSCO_ORDE_SERV = NULL    
         Else    
           Select @VSCO_ORDE_SERV = @CSCO_ORDE_SERV    
    
         /*-- Incrementa el contador de registros - Cuenta Destino --*/    
         Select @VNNU_SECU = @VNNU_SECU + 1    
         Insert Into TXMVTO_CNTB    
                 ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,    
                   NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,    
                   TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,    
                   IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, CO_UNID_ORIG, CO_OPRC_ORIG,    
                   NU_ASTO_ORIG, FE_DOCU_VENC, FA_CAMB_DIAR, FE_DOCU_REFE,    
                   NU_PROC, NU_PROC_SECU, CO_ORDE_SERV, ST_GEST, ST_REDO,   
                   CO_CNTA_ORIG, NU_SECU_ORIG, ST_OTRS, ST_DIFE_CAMB, ST_DIFE_MAYO,     
                   CO_USUA_CREA, CO_USUA_MODI, FE_USUA_CREA, FE_USUA_MODI)    
         Values    
    ( @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @VSCO_OPRC_GEST,    
      @CNNU_ANNO, @CNNU_MESE,@VSNU_ASTO, @VNNU_SECU, @CDFE_ASTO_CNTB,    
      @VSCO_CNTA_DEST, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR, NULL, NULL, NULL, @CSTI_CAMB,    
      @CSCO_MONE, @CNFA_CAMB, @CSTI_OPER_CNTB, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB,    
      @CSDE_GLOS, @CSSI_MVTO_CNTB, @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG,    
      @CSNS_ASTO_ORIG, @CDFE_DOCU_VENC, @VNFA_CAMB_DIAR, @CDFE_DOCU_REFE,    
      @CNNU_PROC, @CNNU_PROC_SECU, @VSCO_ORDE_SERV, 'S', 'N',@CSCO_CNTA_EMPR,   
      @CNNU_SECU, NULL, @CSST_DIFE_CAMB, @CSST_DIFE_MAYO,   
      @CSCO_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_CREA, @CDFE_USUA_MODI )    
  
        If @CSST_RECU = 'N'  
          EXEC SP_TXMVTO_CNTB_I47 @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @VSCO_OPRC_GEST, @CNNU_ANNO, @CNNU_MESE, @VSNU_ASTO, @VNNU_SECU  
    
           /*-- Incrementa el contador de registros - Cuenta Contrapartida --*/    
         Select @VNNU_SECU = @VNNU_SECU + 1    
         If @VSST_AUXI_0002= 'N'    
           Begin    
             Select @VSTI_AUXI_EMPR = NULL    
             Select @VSCO_AUXI_EMPR = NULL    
           End    
         Else    
           Begin    
             Select @VSTI_AUXI_EMPR = @CSTI_AUXI_EMPR    
             Select @VSCO_AUXI_EMPR = @CSCO_AUXI_EMPR    
           End    
    
         If @VSST_ORDE_0002 = 'N'    
           Select @VSCO_ORDE_SERV = NULL    
         Else    
    Select @VSCO_ORDE_SERV = @CSCO_ORDE_SERV    
    
         Insert Into TXMVTO_CNTB    
                   ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,    
                     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,    
                     TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,    
                     IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, CO_UNID_ORIG, CO_OPRC_ORIG,    
                     NU_ASTO_ORIG, FE_DOCU_VENC, FA_CAMB_DIAR, FE_DOCU_REFE,    
                     NU_PROC, NU_PROC_SECU, CO_ORDE_SERV, ST_GEST, ST_REDO, CO_CNTA_ORIG,NU_SECU_ORIG, ST_OTRS, ST_DIFE_CAMB, ST_DIFE_MAYO,    
                     CO_USUA_CREA, CO_USUA_MODI, FE_USUA_CREA, FE_USUA_MODI)    
         Values    
             ( @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @VSCO_OPRC_GEST,    
               @CNNU_ANNO, @CNNU_MESE, @VSNU_ASTO, @VNNU_SECU, @CDFE_ASTO_CNTB,    
               @VSCO_CNTA_CONT, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR, NULL, NULL, NULL, @CSTI_CAMB,    
               @CSCO_MONE, @CNFA_CAMB, @VSTI_OPER, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB,    
               @CSDE_GLOS, @CSSI_MVTO_CNTB, @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG,    
               @CSNS_ASTO_ORIG, @CDFE_DOCU_VENC, @VNFA_CAMB_DIAR, @CDFE_DOCU_REFE,    
               @CNNU_PROC, @CNNU_PROC_SECU, @VSCO_ORDE_SERV, 'S', 'N', @CSCO_CNTA_EMPR,@CNNU_SECU, NULL, @CSST_DIFE_CAMB, @CSST_DIFE_MAYO,    
               @CSCO_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_CREA, @CDFE_USUA_MODI )    
        If @CSST_RECU = 'N'  
   EXEC SP_TXMVTO_CNTB_I47 @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @VSCO_OPRC_GEST, @CNNU_ANNO, @CNNU_MESE, @VSNU_ASTO, @VNNU_SECU  
    
         Select @VNNU_SECU = @VNNU_SECU + 1    
       End    
     End -- DE ST_GEST_LINE ='S'    
   End -- END DEL IF DE COP    
    
-- EL SIGUIENTE IF SOLO AFECTARA LAS OPERACIONES GENERADAS EN CONTABILIDAD    
--  Y NO LAS OPERACIONES CONTABLES GENERADAS POR TESORERIA.    
-- (ESTE IF ORIGINALMEMTE SE ENCONTRABA LUEGO DEL "END" DEL CURSOR, POR LO    
--  QUE SE ASUME QUE ESTO ORIGINA EL ERROR DE PRIMAKY KEY DUPLICADA QUE SE DA EN TESO YA QUE "CHANCABA"    
--  LA TCFECH_PROC RESTANDOLE UNO AL CORRELATIVO)    
    
If @VSST_ASIE_GEST = 'COP' And @CSST_MODI_FLAG = 'N'    
Begin    
  If @VSST_GEST_LINE = 'S'    
  Begin    
    If @VNNU_SECU > 0    
    Begin    
      Select @VSNU_ASTO_0001 = ISNULL(MAX(NU_ASTO),'0000000001')    
      From TXMVTO_CNTB    
      Where CO_EMPR = @CSCO_EMPR    
      And   NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
      And   CO_UNID_CNTB = @CSCO_UNID_ORIG    
      And   CO_OPRC_CNTB = @VSCO_OPRC_GEST    
      And   NU_ANNO = @CNNU_ANNO    
      And   NU_MESE = @CNNU_MESE    
    
--      If convert(int,@CSNS_ASTO_ORIG) - 1 = convert(int,@VSNU_ASTO_0001)    
        Update TCFECH_PROC    
        Set NU_ULTI_ASTO = @VSNU_ASTO_0001--Convert(Smallint, @CSNS_ASTO_ORIG)    
        Where CO_EMPR      = @CSCO_EMPR    
        And   NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
        And   CO_UNID_CNTB = @CSCO_UNID_ORIG    
        And   NU_ANNO      = @CNNU_ANNO    
        And   NU_MESE      = @CNNU_MESE    
        And   CO_OPRC_CNTB = @VSCO_OPRC_GEST    
    End -- DE @VNNU_SECU > 0    
  End -- DE ST_GEST_LINE ='S'    
End --DE COP    
    
Fetch CT_TXMVTO_CNTB_I01_2 into    
 @CSCO_EMPR,@CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG, @CSNS_ASTO_ORIG,@CNNU_SECU,    
 @CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_MONE, @CSTI_CAMB,    
 @CNFA_CAMB, @CSTI_OPER_CNTB, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSDE_GLOS, @CSSI_MVTO_CNTB,    
   @CDFE_DOCU_VENC, @CNFA_CAMB_DIAR, @CDFE_DOCU_REFE, @CNNU_PROC, @CNNU_PROC_SECU,    
        @CSCO_ORDE_SERV, @CNNU_ANNO, @CNNU_MESE, @CSST_MODI_FLAG, @CSST_DIFE_CAMB, @CSST_DIFE_MAYO,     
        @CSCO_USUA_CREA, @CSCO_USUA_MODI,@CDFE_USUA_CREA, @CDFE_USUA_MODI, @CSST_RECU  
End -- END DEL WHILE    
    
Close CT_TXMVTO_CNTB_I01_2    
Deallocate CT_TXMVTO_CNTB_I01_2    
  
end ---  If Exists( Select ST_OTRS From INSERTED    
    
End --(If Exists( Select NU_PROC From Deleted....)    
    
End    
Return    
    
/*---------------------------------------------------------------*/
GO

CREATE Trigger [dbo].[tI_TXMVTO_CNTB_I02] ON [dbo].[TXMVTO_CNTB]      
FOR INSERT    
/*-------------------------------------------------------------------*/    
/*----- Empresa           : OFISIS S.A.                          ----*/    
/*----- Cliente           : OFISIS S.A.                          ----*/    
/*----- Sistema           : Contabilidad                         ----*/    
/*----- Modulo            : Empresa                              ----*/    
/*----- Programa          : MAYORIZACION                             ----*/    
/*----- Nombre            : tI_TXMVTO_CNTB_I02                   ----*/    
/*----- Script            : TXMVTO_CNTB                          ----*/    
/*----- Desarrollado por  : Marco Acua                          ----*/    
/*----- Fecha             : 08/02/2003                           ----*/    
/*----- Base de Datos     : MS SQL Server                        ----*/    
/*----- Version BD        : 7.0                                  ----*/    
/*-------------------------------------------------------------------*/    
/*------MODIFICADO 1: PERCY GARCIA   --------*/    
/*------FECHA MODIF. : 19/02/2004  --------*/    
/*---- DETALLE MODIF. : COMENTO VALID. , AHORA MAYORIZA CUANDO ES ASTO DIF CAMBIO----*/    
/*------------DROP Trigger tI_TXMVTO_CNTB_I02------------------------*/    
/*-------------------------------------------------------------------*/    
/*-------------------------------------------------------------------*/    
/*------MODIFICADO 2: PERCY GARCIA           --------*/    
/*------FECHA MODIF. : 03/03/2004          --------*/    
/*---- DETALLE MODIF. : se aumento en el join del cursor para que se omita la operacion de cierre ----*/    
/*---------------------------------------------------------------------*/  
/*----- Modificado 7 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 30/06/2006                             -----*/  
/*----- Detalle Modifica : se aumento el tamaño de la @VSNV_QUIE_CNTA de 10 a 40-----*/  
/*---------------------------------------------------------------------*/  
/*----------- DROP Trigger tI_TXMVTO_CNTB_I02 -----------------------*/    
/*-------------------------------------------------------------------*/    
    
As    
Begin    
Declare     
@CSCO_EMPR       TD_VC_002,    
@CNNU_CNTB_EMPR   TD_IN_001,    
@CNNU_ANNO           TD_IN_001,    
@CNNU_MESE           TD_IN_001,    
@CNNU_SECU  TD_IN_002,    
@CSCO_MONE   TD_VC_003,    
-------- Variables Gesti>n en L-nea ---------    
@CSCO_CNTA_CONT  TD_VC_020_CNTA,    
@CSCO_CNTA_DEST  TD_VC_020_CNTA,    
@CSCO_CNTA_EMPR   TD_VC_020_CNTA,    
@CSCO_ORDE_SERV         TD_VC_020,    
@VNNU_SECU  TD_IN_002,    
@CDFE_ASTO_CNTB   TD_DT_001,    
@CSTI_CAMB  TD_VC_003,    
@CNFA_CAMB   TD_NU_015_006,    
@CNIM_MVTO_ORIG  TD_NU_016_004,    
@CNIM_MVTO_CNTB  TD_NU_016_004,    
@VSTI_OPER  TD_VC_003,    
@CSTI_OPER_CNTB  TD_VC_003,    
@CSDE_GLOS  TD_VC_100,    
@CSCO_OPRC_ORIG      TD_VC_003,    
@CSCO_UNID_ORIG         TD_VC_003,    
@CSNS_ASTO_ORIG         TD_VC_010,    
@CDFE_DOCU_VENC  TD_DT_001,     
@CNFA_CAMB_DIAR  TD_NU_015_006,     
@CDFE_DOCU_REFE  TD_DT_001,     
@VSCO_OPRC_GEST      TD_VC_003,    
@CNNU_PROC  TD_IN_001,     
@CNNU_PROC_SECU  TD_IN_001,    
@CSTI_AUXI_EMPR   TD_VC_001,    
@CSCO_AUXI_EMPR   TD_VC_020,    
@CSST_AUXI_EMPR       TD_VC_001,    
@VSST_AUXI_DEST       TD_VC_001,    
@VSST_AUXI_CONT       TD_VC_001,    
@VNFA_CMPR_OFIC         TD_NU_015_006,    
@VNFA_VNTA_OFIC         TD_NU_015_006,     
@VNFA_CAMB_DIAR         TD_NU_015_006,    
@VSCO_MONE  TD_VC_003,    
@VSCO_CNTA_DEST    TD_VC_020,    
@VSCO_CNTA_CONT     TD_VC_020,    
@VSST_CNTA_CAMB     TD_VC_003,    
@VSST_AUXI_0001     TD_VC_001,    
@VSST_AUXI_0002     TD_VC_001,    
@VSST_ASIE_GEST     TD_VC_003,    
@CSSI_MVTO_CNTB     TD_VC_003,    
@VSNU_ASTO           TD_VC_010,    
@VSNU_ASTO_0001         TD_VC_010,    
@VSST_GEST_LINE      TD_VC_001,    
@VSCO_OPRC_0001      TD_VC_003,    
@VSST_ASIE_APRO      TD_VC_001,    
@VSST_ORDE_0001         TD_VC_001,    
@VSST_ORDE_0002         TD_VC_001,    
@VSTI_AUXI_EMPR   TD_VC_001,    
@VSCO_AUXI_EMPR   TD_VC_020,    
@VSCO_ORDE_SERV         TD_VC_020,    
-------- Variables Fecha de Proceso ---------------    
@CSCO_UNID_CNTB   TD_VC_003,    
@CSCO_OPRC_CNTB      TD_VC_003,    
@CSNU_ASTO              TD_VC_010,    
@CSTI_OPER  TD_VC_003,    
@VNIM_CARG_ORIG         TD_NU_016_004,    
@VNIM_ABON_ORIG         TD_NU_016_004,    
@VNIM_CARG_CNTB         TD_NU_016_004,    
@VNIM_ABON_CNTB         TD_NU_016_004,    
@VSST_CIER_CNTB         TD_VC_001,    
@VSDE_ERRO  TD_VC_050,    
-------- Variables Mayorizaci>n en L-nea ---------    
@VSPR_DATO  TD_VC_020,    
@VNNV_INFO_CNTA         TD_IN_001,    
@VSNV_QUIE_CNTA         TD_VC_040,    
@VNCA_INIC              TD_IN_001,    
@VNCA_LONG              TD_IN_001,    
@VNCA_LONG_AUXI         TD_IN_001,    
@VNNV_AUXI              TD_IN_001,    
@VNNU_FINA              TD_IN_001,    
@VSCO_OPRC_CNTB         TD_VC_003,    
-------- Variables Actualiza Datos Reales ---------    
@CNNU_SECU_MVTO         TD_IN_001,    
@VNIM_MVTO_ORIG         TD_NU_016_004,    
@VNIM_MVTO_CNTB         TD_NU_016_004,    
@VSDE_CADE_IMPR         TD_VC_020,    
@VSCO_MONE_CNTB         TD_VC_003,    
@CNNU_REGI_EMPR         TD_IN_001,    
@CSCO_PART  TD_VC_020,    
@CNPO_APLI  TD_NU_015_006,    
@CSCO_DOMI  TD_VC_003,    
@CNTI_SIGN_CONT         TD_IN_001,    
@CNTI_OPER_ARIT         TD_IN_001,    
@CSCO_MONE_PART         TD_VC_003,    
@CSTI_CAMB_PART         TD_VC_003,     
@VNIM_MVTO  TD_NU_016_004,    
@VNIM_MVTO_ACUM         TD_NU_016_004,    
@VNPO_APLI_DOMI         TD_NU_015_006,    
@VSST_PRES  TD_VC_001,    
@CSTI_DOCU              TD_VC_003,    
@CSNU_DOCU              TD_VC_020,    
@CDFE_DOCU              TD_DT_001,  
  
@CSCO_USUA_CREA         TD_VC_008,  
@CSCO_USUA_MODI         TD_VC_008,  
@CDFE_USUA_CREA         TD_DT_001_SIST,  
@CDFE_USUA_MODI         TD_DT_001_SIST    
    
--Solo se Ejecuta si el numero de Proceso es Nulo o Cero    
If Exists( Select NU_PROC From INSERTED    
           Where  (NU_PROC Is Null Or NU_PROC = 0) And ST_OTRS Is Null )    
Begin    
    
If Not Exists( Select ST_MASI From INSERTED Where  ST_MASI = 'S' )
Begin
    
-- No debe entrar si el asiento a Insertar es de Ajuste por Dif. Cambio en Batch  
/*If Not Exists ( Select CO_EMPR From INSERTED T1    
    Where  ST_DIFE_CAMB = 'S' And ST_DIFE_MAYO = 'N' )    
Begin    
*/
----------------------------- Mayorizaci>n -------------------------------------------------------    
    
Declare CT_TXMVTO_CNTB_I02_1 Cursor    
For    
Select  T1.CO_EMPR, T1.NU_CNTB_EMPR,  T1.CO_UNID_CNTB, T1.CO_OPRC_CNTB, T1.NU_ANNO,    
        T1.NU_MESE, T1.NU_ASTO,      T1.NU_SECU,   T1.FE_ASTO_CNTB,  T1.CO_CNTA_EMPR,    
  T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR,   T1.CO_MONE,  T1.TI_OPER,  Round(T1.IM_MVTO_ORIG, 2),    
 Round(T1.IM_MVTO_CNTB, 2), T1.SI_MVTO_CNTB,   LTRIM(RTRIM(T1.CO_ORDE_SERV)),   
 t1.CO_USUA_CREA, t1.CO_USUA_MODI, t1.FE_USUA_CREA, t1.FE_USUA_MODI    
From INSERTED T1    
Where T1.CO_OPRC_CNTB NOT IN (Select T2.CO_OPRC_CNTB From TTIDEN_OPER T2    
   Where T1.CO_EMPR = T2.CO_EMPR     
   And T1.NU_CNTB_EMPR = T2.NU_CNTB_EMPR    
   And T2.ID_OPRC In ( '012', '013'))    
       
Open  CT_TXMVTO_CNTB_I02_1    
Fetch CT_TXMVTO_CNTB_I02_1 Into    
 @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB,    
 @CSCO_OPRC_CNTB, @CNNU_ANNO,  @CNNU_MESE,    
 @CSNU_ASTO,  @CNNU_SECU,  @CDFE_ASTO_CNTB,    
 @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,    
 @CSCO_MONE,  @CSTI_OPER,  @CNIM_MVTO_ORIG,    
 @CNIM_MVTO_CNTB, @CSSI_MVTO_CNTB, @CSCO_ORDE_SERV,  
 @CSCO_USUA_CREA, @CSCO_USUA_MODI,  
 @CDFE_USUA_CREA, @CDFE_USUA_MODI     
    
While @@Fetch_Status = 0    
Begin    
  If @@Fetch_Status < 0 Or @CSSI_MVTO_CNTB = 'DIG'    
    Begin    
      Close CT_TXMVTO_CNTB_I02_1    
      Deallocate CT_TXMVTO_CNTB_I02_1    
      Return    
    End    
    
  If @CSTI_AUXI_EMPR = ''    
    Select @CSTI_AUXI_EMPR = NULL    
  If @CSCO_AUXI_EMPR = ''    
    Select @CSCO_AUXI_EMPR = NULL    
  If @CSCO_ORDE_SERV = ''     
    Select @CSCO_ORDE_SERV = NULL    
    
  If @CSTI_OPER = 'CAR'    
    Begin    
      Select @VNIM_CARG_ORIG = @CNIM_MVTO_ORIG    
      Select @VNIM_CARG_CNTB = @CNIM_MVTO_CNTB    
      Select @VNIM_ABON_ORIG = 0    
      Select @VNIM_ABON_CNTB = 0    
    End    
  Else If @CSTI_OPER = 'ABO'    
    Begin    
      Select @VNIM_CARG_ORIG = 0    
      Select @VNIM_CARG_CNTB = 0       Select @VNIM_ABON_ORIG = @CNIM_MVTO_ORIG    
      Select @VNIM_ABON_CNTB = @CNIM_MVTO_CNTB    
    End    
    
  Select @VSPR_DATO = replicate('0',@CNNU_MESE) + '1' + replicate('0',20-(@CNNU_MESE+1))    
    
  If NOT EXISTS(SELECT CO_EMPR    
         FROM TASALD_EMPR    
                WHERE CO_EMPR = @CSCO_EMPR    
                  AND CO_UNID_CNTB = @CSCO_UNID_CNTB    
    AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
    AND NU_ANNO = @CNNU_ANNO    
    AND NU_MESE = @CNNU_MESE    
                  AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
    AND TI_AUXI_EMPR IS NULL    
    AND CO_AUXI_EMPR IS NULL    
    AND CO_ORDE_SERV IS NULL )    
    Insert Into TASALD_EMPR    
    Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,    
     @CSCO_CNTA_EMPR, NULL, NULL, NULL, @VNIM_CARG_CNTB, @VNIM_ABON_CNTB,     
     @VNIM_CARG_ORIG, @VNIM_ABON_ORIG, @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA,     
     @CSCO_USUA_MODI, @CDFE_USUA_MODI)    
  Else    
    Update TASALD_EMPR    
    Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),    
  IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),    
  IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),    
  IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),    
  CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI    
    Where CO_EMPR = @CSCO_EMPR    
      And CO_UNID_CNTB = @CSCO_UNID_CNTB    
      And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
      And NU_ANNO = @CNNU_ANNO    
      And NU_MESE = @CNNU_MESE    
      And CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
      And TI_AUXI_EMPR IS NULL    
      And CO_AUXI_EMPR IS NULL    
      And CO_ORDE_SERV IS NULL    
    
    -- Caso Cuenta - SI Auxiliar - SI Orden Servicio      
  If @CSTI_AUXI_EMPR IS NOT NULL AND @CSCO_AUXI_EMPR IS NOT NULL AND @CSCO_ORDE_SERV IS NOT NULL    
  Begin    
    If NOT EXISTS(Select CO_CNTA_EMPR    
                  From TASALD_EMPR    
                  Where CO_EMPR = @CSCO_EMPR    
                    And CO_UNID_CNTB = @CSCO_UNID_CNTB    
      And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
      And NU_ANNO = @CNNU_ANNO    
      And NU_MESE = @CNNU_MESE    
      And CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
      And TI_AUXI_EMPR = @CSTI_AUXI_EMPR    
      And CO_AUXI_EMPR = @CSCO_AUXI_EMPR    
      And CO_ORDE_SERV = @CSCO_ORDE_SERV)     
        -- Inserta aquellos que tienen auxiliares Con Orden Servicio    
       Insert Into TASALD_EMPR    
       Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,    
        @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_ORDE_SERV,     
        @VNIM_CARG_CNTB, @VNIM_ABON_CNTB, @VNIM_CARG_ORIG, @VNIM_ABON_ORIG,     
        @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)    
    Else    
      Update TASALD_EMPR    
      Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),    
    IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),    
    IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),    
    IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),    
    CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI    
      Where CO_EMPR = @CSCO_EMPR    
        And CO_UNID_CNTB = @CSCO_UNID_CNTB    
        And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
        And NU_ANNO = @CNNU_ANNO    
        And NU_MESE = @CNNU_MESE    
        And CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
        And TI_AUXI_EMPR = @CSTI_AUXI_EMPR    
        And CO_AUXI_EMPR = @CSCO_AUXI_EMPR    
 And CO_ORDE_SERV = @CSCO_ORDE_SERV    
  End    
    
    -- Caso Cuenta - SI Auxiliar - NO Orden Servicio      
  If @CSTI_AUXI_EMPR IS NOT NULL AND @CSCO_AUXI_EMPR IS NOT NULL AND @CSCO_ORDE_SERV IS NULL    
  Begin    
    If NOT EXISTS(Select CO_CNTA_EMPR    
                  From TASALD_EMPR    
                  Where CO_EMPR = @CSCO_EMPR    
                    And CO_UNID_CNTB = @CSCO_UNID_CNTB    
      And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
      And NU_ANNO = @CNNU_ANNO    
      And NU_MESE = @CNNU_MESE    
      And CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
      And TI_AUXI_EMPR = @CSTI_AUXI_EMPR    
      And CO_AUXI_EMPR = @CSCO_AUXI_EMPR    
      And CO_ORDE_SERV IS NULL)     
        -- Inserta aquellos que tienen auxiliares Sin Orden Servicio    
       Insert Into TASALD_EMPR    
       Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,    
        @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, NULL,     
        @VNIM_CARG_CNTB, @VNIM_ABON_CNTB, @VNIM_CARG_ORIG, @VNIM_ABON_ORIG,     
        @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)    
    Else    
      Update TASALD_EMPR    
      Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),    
    IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),    
    IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),    
    IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),    
    CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI    
      Where CO_EMPR = @CSCO_EMPR    
        And CO_UNID_CNTB = @CSCO_UNID_CNTB    
        And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
        And NU_ANNO = @CNNU_ANNO    
        And NU_MESE = @CNNU_MESE    
        And CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
        And TI_AUXI_EMPR = @CSTI_AUXI_EMPR    
        And CO_AUXI_EMPR = @CSCO_AUXI_EMPR    
        And CO_ORDE_SERV IS NULL    
  End    
    
  If @CSTI_AUXI_EMPR IS NULL AND @CSCO_AUXI_EMPR IS NULL AND @CSCO_ORDE_SERV IS NOT NULL    
  Begin    
    -- Caso Cuenta - NO Auxiliar - SIN Orden Servicio      
    If NOT EXISTS(SELECT CO_CNTA_EMPR    
                  FROM TASALD_EMPR    
                  WHERE CO_EMPR = @CSCO_EMPR    
                    AND CO_UNID_CNTB = @CSCO_UNID_CNTB    
             AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
             AND NU_ANNO = @CNNU_ANNO    
             AND NU_MESE = @CNNU_MESE    
             AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
             AND TI_AUXI_EMPR Is NULL    
             AND CO_AUXI_EMPR Is NULL    
             AND CO_ORDE_SERV = @CSCO_ORDE_SERV)    
        -- Inserta aquellos que tienen auxiliares Con o Sin Orden Servicio    
      Insert Into TASALD_EMPR    
      Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,    
       @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_ORDE_SERV,         @VNIM_CARG_CNTB, @VNIM_ABON_CNTB, @VNIM_CARG_ORIG, @VNIM_ABON_ORIG,     
       @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)    
    Else    
      Update TASALD_EMPR    
      Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),    
    IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),    
    IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),    
    IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),    
    CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI  
      WHERE CO_EMPR = @CSCO_EMPR    
        AND CO_UNID_CNTB = @CSCO_UNID_CNTB    
        AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
        AND NU_ANNO = @CNNU_ANNO    
        AND NU_MESE = @CNNU_MESE    
        AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR    
        AND TI_AUXI_EMPR Is NULL    
        AND CO_AUXI_EMPR Is NULL    
        AND CO_ORDE_SERV = @CSCO_ORDE_SERV    
  End    
-- INICIO LOOP    
  Select @VNNV_INFO_CNTA = NV_INFO_CNTA,    
         @VSNV_QUIE_CNTA = NV_QUIE_CNTA      
  From   TMPARA_CONT    
  Where  CO_EMPR = @CSCO_EMPR    
    
  Select @VNCA_LONG = DataLength(Rtrim(@VSNV_QUIE_CNTA)) - 1    
  Select @VNNU_FINA = 1    
    
  -- Empieza a Trabajar    
  While @VNNU_FINA = 1    
  Begin    
    -- Selecciona     
    Select @VNCA_INIC = @VNCA_LONG - 2    
    Select @VNCA_LONG = @VNCA_LONG - 2    
    Select @VNNV_AUXI = Convert(Int, Substring(@VSNV_QUIE_CNTA,@VNCA_INIC,2))    
    
-- Select @VNCA_INIC,@VNCA_LONG, @VNNV_AUXI    
    -- El Nivel Detalle ya existe y si es cero no se hace nada    
    If ( @VNNV_AUXI < @VNNV_INFO_CNTA ) And ( @VNNV_AUXI > 0 )    
    Begin    
      -- Inserta en la Tabla de Saldos    
      If NOT EXISTS(SELECT CO_EMPR    
                      FROM TASALD_EMPR    
                     WHERE CO_EMPR = @CSCO_EMPR    
                     AND CO_UNID_CNTB = @CSCO_UNID_CNTB    
       AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
       AND NU_ANNO = @CNNU_ANNO    
       AND NU_MESE = @CNNU_MESE    
                     AND CO_CNTA_EMPR = Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI)    
       And TI_AUXI_EMPR IS NULL    
       And CO_AUXI_EMPR IS NULL    
       And CO_ORDE_SERV IS NULL )    
        Insert Into TASALD_EMPR    
 Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,    
  Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI), NULL, NULL, NULL, @VNIM_CARG_CNTB,     
  @VNIM_ABON_CNTB, 0, 0, @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA,     
  @CSCO_USUA_MODI, @CDFE_USUA_MODI)    
      Else    
        Update TASALD_EMPR    
 Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),    
      IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),    
      CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI  
 WHERE CO_EMPR = @CSCO_EMPR    
        AND CO_UNID_CNTB = @CSCO_UNID_CNTB    
 AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
 AND NU_ANNO = @CNNU_ANNO    
 AND NU_MESE = @CNNU_MESE    
 AND CO_CNTA_EMPR = Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI)    
 And TI_AUXI_EMPR IS NULL    
 And CO_AUXI_EMPR IS NULL    
 And CO_ORDE_SERV IS NULL    
  And Datalength(CO_CNTA_EMPR) = @VNNV_AUXI        

    End    
    If @VNCA_INIC <= 0    
      Select @VNNU_FINA = 0    
    
  End    
-- FIN LOOP    
      
Fetch CT_TXMVTO_CNTB_I02_1 Into    
 @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB,    
 @CSCO_OPRC_CNTB, @CNNU_ANNO,  @CNNU_MESE,    
 @CSNU_ASTO,  @CNNU_SECU,  @CDFE_ASTO_CNTB,    
 @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,    
 @CSCO_MONE,  @CSTI_OPER,  @CNIM_MVTO_ORIG,    
 @CNIM_MVTO_CNTB, @CSSI_MVTO_CNTB, @CSCO_ORDE_SERV,  
 @CSCO_USUA_CREA, @CSCO_USUA_MODI,  
 @CDFE_USUA_CREA, @CDFE_USUA_MODI     
    
End -- END WHILE @@Fetch_Status = 0    
    
  Close CT_TXMVTO_CNTB_I02_1    
  Deallocate CT_TXMVTO_CNTB_I02_1    
    
 End --- If Not Exists( Select ST_MASI From INSERTED
   
 End --(If Exists( Select NU_PROC From Deleted....)    
End    
Return    
----------------------------------------------------------------
GO

CREATE Trigger [dbo].[tI_TXMVTO_CNTB_I03] ON [dbo].[TXMVTO_CNTB]  
FOR INSERT  
/*-------------------------------------------------------------------*/  
/*----- Empresa           : OFISIS S.A.                          ----*/  
/*----- Cliente           : OFISIS S.A.                          ----*/  
/*----- Sistema           : Contabilidad                         ----*/  
/*----- Modulo            : Empresa                              ----*/  
/*----- Programa          : Actualización Datos Reales           ----*/  
/*----- Nombre            : tI_TXMVTO_CNTB_I03                   ----*/  
/*----- Script            : TXMVTO_CNTB                          ----*/  
/*----- Desarrollado por  : Yessica Morales                      ----*/  
/*----- Fecha             : 08/02/2003                           ----*/  
/*----- Base de Datos     : MS SQL Server                        ----*/  
/*----- Version BD        : 7.0                                  ----*/  
/*-------------------------------------------------------------------*/  
/*-------------------------------------------------------------------*/  
/*----- Modificado 1 por : PDGV                    ----*/  
/*----- Fecha Modifica   : 20/01/2004                            ----*/  
/*----- Detalle Modifica : UPDATE A LA TCFECH_PROC EN LA ---*/  
/*----- OPERACION DE GESTION CASO PARAMETRIZADO COMO'COP'  ----*/  
/*-------------------------------------------------------------------*/  
/*-------------------------------------------------------------------*/  
/*----- Modificado 2 por : PDGV                    ----*/  
/*----- Fecha Modifica   : 19/02/2004                            ----*/  
/*----- Detalle Modifica : SE COMENTO VALID. PARA QUE NO HAGA GESTION PARA---*/  
/*----- EL ASIENTO  DE DIFERENCIA DE CAMBIO  ----*/  
/*-------------------------------------------------------------------*/  
/*------------DROP Trigger tI_TXMVTO_CNTB_I01------------------------*/  
/*-------------------------------------------------------------------*/  
As  
Begin  
Declare  
@CSCO_EMPR       TD_VC_002,  
@CNNU_CNTB_EMPR   TD_IN_001,  
@CNNU_ANNO           TD_IN_001,  
@CNNU_MESE           TD_IN_001,  
@CNNU_SECU  TD_IN_002,  
@CSCO_MONE   TD_VC_003,  
-------- Variables Gesti>n en L-nea ---------  
@CSCO_CNTA_CONT  TD_VC_020_CNTA,  
@CSCO_CNTA_DEST  TD_VC_020_CNTA,  
@CSCO_CNTA_EMPR   TD_VC_020_CNTA,  
@CSCO_ORDE_SERV         TD_VC_020,  
@VNNU_SECU  TD_IN_002,  
@CDFE_ASTO_CNTB   TD_DT_001,  
@CSTI_CAMB  TD_VC_003,  
@CNFA_CAMB   TD_NU_015_006,  
@CNIM_MVTO_ORIG  TD_NU_016_004,  
@CNIM_MVTO_CNTB  TD_NU_016_004,  
@VSTI_OPER  TD_VC_003,  
@CSTI_OPER_CNTB  TD_VC_003,  
@CSDE_GLOS  TD_VC_100,  
@CSCO_OPRC_ORIG      TD_VC_003,  
@CSCO_UNID_ORIG         TD_VC_003,  
@CSNS_ASTO_ORIG         TD_VC_010,  
@CDFE_DOCU_VENC  TD_DT_001,  
@CNFA_CAMB_DIAR  TD_NU_015_006,  
@CDFE_DOCU_REFE  TD_DT_001,  
@VSCO_OPRC_GEST      TD_VC_003,  
@CNNU_PROC  TD_IN_001,  
@CNNU_PROC_SECU  TD_IN_001,  
@CSTI_AUXI_EMPR   TD_VC_001,  
@CSCO_AUXI_EMPR   TD_VC_020,  
@CSST_AUXI_EMPR       TD_VC_001,  
@VSST_AUXI_DEST       TD_VC_001,  
@VSST_AUXI_CONT       TD_VC_001,  
@VNFA_CMPR_OFIC         TD_NU_015_006,  
@VNFA_VNTA_OFIC         TD_NU_015_006,  
@VNFA_CAMB_DIAR         TD_NU_015_006,  
@VSCO_MONE  TD_VC_003,  
@VSCO_CNTA_DEST    TD_VC_020,  
@VSCO_CNTA_CONT     TD_VC_020,  
@VSST_CNTA_CAMB     TD_VC_003,  
@VSST_AUXI_0001     TD_VC_001,  
@VSST_AUXI_0002     TD_VC_001,  
@VSST_ASIE_GEST     TD_VC_003,  
@CSSI_MVTO_CNTB     TD_VC_003,  
@VSNU_ASTO           TD_VC_010,  
@VSNU_ASTO_0001         TD_VC_010,  
@VSST_GEST_LINE      TD_VC_001,  
@VSCO_OPRC_0001      TD_VC_003,  
@VSST_ASIE_APRO      TD_VC_001,  
@VSST_ORDE_0001         TD_VC_001,  
@VSST_ORDE_0002         TD_VC_001,  
@VSTI_AUXI_EMPR   TD_VC_001,  
@VSCO_AUXI_EMPR   TD_VC_020,  
@VSCO_ORDE_SERV         TD_VC_020,  
-------- Variables Fecha de Proceso ---------------  
@CSCO_UNID_CNTB   TD_VC_020,  
@CSCO_OPRC_CNTB      TD_VC_003,  
@CSNU_ASTO              TD_VC_010,  
@CSTI_OPER  TD_VC_003,  
@VNIM_CARG_ORIG         TD_NU_016_004,  
@VNIM_ABON_ORIG         TD_NU_016_004,  
@VNIM_CARG_CNTB         TD_NU_016_004,  
@VNIM_ABON_CNTB         TD_NU_016_004,  
@VSST_CIER_CNTB         TD_VC_001,  
@VSDE_ERRO  TD_VC_050,  
-------- Variables Mayorizaci>n en L-nea ---------  
@VSPR_DATO  TD_VC_020,  
@VNNV_INFO_CNTA         TD_IN_001,  
@VSNV_QUIE_CNTA         TD_VC_020,  
@VNCA_INIC              TD_IN_001,  
@VNCA_LONG              TD_IN_001,  
@VNCA_LONG_AUXI         TD_IN_001,  
@VNNV_AUXI              TD_IN_001,  
@VNNU_FINA              TD_IN_001,  
@VSCO_OPRC_CNTB         TD_VC_003,  
-------- Variables Actualiza Datos Reales ---------  
@CNNU_SECU_MVTO         TD_IN_002,  
@VNIM_MVTO_ORIG         TD_NU_016_004,  
@VNIM_MVTO_CNTB         TD_NU_016_004,  
@VSDE_CADE_IMPR         TD_VC_020,  
@VSCO_MONE_CNTB         TD_VC_003,  
@CNNU_REGI_EMPR         TD_IN_001,  
@CSCO_PART  TD_VC_020,  
@CNPO_APLI  TD_NU_015_006,  
@CSCO_DOMI  TD_VC_003,  
@CNTI_SIGN_CONT         TD_IN_001,  
@CNTI_OPER_ARIT         TD_IN_001,  
@CSCO_MONE_PART         TD_VC_003,  
@CSTI_CAMB_PART         TD_VC_003,  
@VNIM_MVTO  TD_NU_016_004,  
@VNIM_MVTO_ACUM         TD_NU_016_004,  
@VNPO_APLI_DOMI         TD_NU_015_006,  
@VSST_PRES  TD_VC_001,  
@CSTI_DOCU              TD_VC_003,  
@CSNU_DOCU              TD_VC_020,  
@CDFE_DOCU              TD_DT_001,  
@CSST_MODI_FLAG         TD_VC_001_SINO,
@VSDE_CAMB        TD_VC_050,

@CSCO_USUA_CREA         TD_VC_008,
@CSCO_USUA_MODI         TD_VC_008,
@CDFE_USUA_CREA         TD_DT_001_SIST,
@CDFE_USUA_MODI         TD_DT_001_SIST    
  
--Solo se Ejecuta si el numero de Proceso es Nulo o Cero  
If Exists( Select NU_PROC From Inserted  
           Where  NU_PROC Is Null )  
Begin  
  
If Exists( Select ST_OTRS From INSERTED  
           Where  ST_OTRS Is Null )  
Begin  
  
-------------------------- Actualiza Datos Reales ------------------------------------  
Declare CT_TXMVTO_CNTB_I01_4 Cursor For  
Select  T1.CO_EMPR, T1.NU_CNTB_EMPR, T1.CO_UNID_CNTB, T1.NU_ANNO, T1.NU_MESE, T1.NU_SECU,  
        T1.CO_CNTA_EMPR, T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR, T1.CO_MONE, T1.TI_OPER, 
	Round(Isnull(T1.IM_MVTO_ORIG, 0), 2), Round(Isnull(T1.IM_MVTO_CNTB, 0), 2),  
	Ltrim(Rtrim(T1.CO_ORDE_SERV)), T1.SI_MVTO_CNTB, T1.FE_ASTO_CNTB, T1.TI_CAMB,  
	T1.FA_CAMB, T1.NU_ASTO, T1.TI_DOCU, T1.NU_DOCU, T1.FE_DOCU,
        t1.CO_USUA_CREA, t1.CO_USUA_MODI, t1.FE_USUA_CREA, t1.FE_USUA_MODI    
From INSERTED T1  
where T1.CO_CNTA_EMPR in (select Isnull(max(T2.CO_CNTA_EMPR), '') from OFIPRES..TDPART_CONT T2
	where T2.CO_EMPR = T1.CO_EMPR
	and T2.NU_ANNO = T1.NU_ANNO
	and T2.NU_MESE = T1.NU_MESE
	and T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR)
  
  Open  CT_TXMVTO_CNTB_I01_4  
  Fetch CT_TXMVTO_CNTB_I01_4 Into  
   @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CNNU_ANNO, @CNNU_MESE, @CNNU_SECU_MVTO,  
   @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_MONE, @CSTI_OPER, @CNIM_MVTO_ORIG,  
   @CNIM_MVTO_CNTB, @CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, @CDFE_ASTO_CNTB, @CSTI_CAMB, @CNFA_CAMB,  
   @CSNU_ASTO, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,
   @CSCO_USUA_CREA, @CSCO_USUA_MODI,
   @CDFE_USUA_CREA, @CDFE_USUA_MODI   
  While @@Fetch_Status = 0  
  Begin  
   Select @VSST_PRES = ST_PRES  
     From TMEMPR  
    Where CO_EMPR = @CSCO_EMPR  
   If  @@Fetch_Status < 0 Or @CSSI_MVTO_CNTB = 'DIG' Or @VSST_PRES = 'N'  
     Begin  
        Close CT_TXMVTO_CNTB_I01_4  
        Deallocate CT_TXMVTO_CNTB_I01_4  
        Return  
     End  
  
   If @VSST_PRES = 'S' -- Si hay Sistema de Presupuestos  
   Begin  
    If @CSTI_OPER = 'CAR'  
      Begin  
        Select @VNIM_MVTO_ORIG = @CNIM_MVTO_ORIG  
        Select @VNIM_MVTO_CNTB = @CNIM_MVTO_CNTB  
      End  
    Else If @CSTI_OPER = 'ABO'  
      Begin  
        Select @VNIM_MVTO_ORIG = (-1)* @CNIM_MVTO_ORIG  
        Select @VNIM_MVTO_CNTB = (-1)* @CNIM_MVTO_CNTB  
      End  
  
    Select @VSCO_MONE_CNTB = CO_MONE  
      From TTCNTB_EMPR  
     Where CO_EMPR = @CSCO_EMPR  
       And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
  
    --- Cursor 2  
    Declare CT_TXMVTO_CNTB_I01_5 Cursor  
    For  
     Select T1.NU_REGI_EMPR, T1.CO_PART, T1.NU_SECU, T1.PO_APLI, T1.CO_DOMI,  
     T1.TI_SIGN_CONT, T1.TI_OPER_ARIT, T2.CO_MONE, T2.TI_CAMB  
     From OFIPRES..TDPART_CONT T1, OFIPRES..TMPART T2  
     Where T1.CO_EMPR = @CSCO_EMPR  
     And T1.NU_ANNO = @CNNU_ANNO  
     And T1.NU_MESE = @CNNU_MESE  
     And T1.NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
     And (Isnull(T1.CO_UNID_CNTB,'%') Like Isnull(Rtrim(Ltrim(@CSCO_UNID_CNTB)), '%')  
     Or  T1.CO_UNID_CNTB Is null)  
     And (Isnull(T1.CO_CNTA_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSCO_CNTA_EMPR)), '%')  
     Or  T1.CO_CNTA_EMPR Is null)  
     And (Isnull(T1.TI_AUXI_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSTI_AUXI_EMPR)), '%')  
     Or  T1.TI_AUXI_EMPR Is null)  
     And (Isnull(T1.CO_AUXI_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSCO_AUXI_EMPR)), '%')  
     Or  T1.CO_AUXI_EMPR Is null)  
     And (Isnull(T1.CO_ORDE_SERV,'%') Like Isnull(Rtrim(Ltrim(@CSCO_ORDE_SERV)), '%')  
     Or  T1.CO_ORDE_SERV Is null)  
     And T2.CO_EMPR = T1.CO_EMPR  
     And T2.NU_ANNO = T1.NU_ANNO  
     And T2.CO_PART = T1.CO_PART  
     And T2.TI_SITU = 'ACT'  
  
    Open  CT_TXMVTO_CNTB_I01_5  
    Fetch CT_TXMVTO_CNTB_I01_5 Into  
      @CNNU_REGI_EMPR, @CSCO_PART, @CNNU_SECU, @CNPO_APLI, @CSCO_DOMI, @CNTI_SIGN_CONT, 
      @CNTI_OPER_ARIT, @CSCO_MONE_PART, @CSTI_CAMB_PART  
    While @@Fetch_Status = 0  
    Begin  
     If Not Exists (Select CO_PART  
        From OFIPRES..TRSIST_PART  
       Where CO_EMPR = @CSCO_EMPR  
         And NU_ANNO = @CNNU_ANNO  
         And CO_PART = @CSCO_PART)  
      Begin -- Si lee de Contabilidad  

 --- Valida Monedas - Calcula importes  
 If @VSCO_MONE_CNTB = @CSCO_MONE_PART -- moneda contb = moneda partida  
    Select @VNIM_MVTO = @VNIM_MVTO_ORIG  
  
 If @VSCO_MONE_CNTB = @CSCO_MONE     -- moneda contb = moneda movimiento  
  Begin  
    If @CSCO_MONE = @CSCO_MONE_PART  -- moneda movimiento = moneda partida  
       Select @VNIM_MVTO = @VNIM_MVTO_ORIG  
    If @CSCO_MONE != @CSCO_MONE_PART  -- moneda movimiento != moneda partida  
      Begin
        If @CNFA_CAMB = 1
         Begin
           Select @VNFA_CMPR_OFIC = Isnull(Max(FA_CMPR_OFIC), 1), @VNFA_VNTA_OFIC = Isnull(Max(FA_VNTA_OFIC), 1)
           From TCFACT_CAMB
           Where co_mone = @CSCO_MONE_PART
	    And co_mone_base = @VSCO_MONE_CNTB
	    And fe_camb = @CDFE_ASTO_CNTB
     
          If @CSTI_CAMB = 'COM'
           Select @CNFA_CAMB = @VNFA_CMPR_OFIC
          Else
           Select @CNFA_CAMB = @VNFA_VNTA_OFIC
         End
      Exec SP_CONV_MONE_Q03 @CSCO_EMPR, @CSCO_MONE, @CSCO_MONE_PART, @CSTI_CAMB, @CSTI_CAMB_PART, @CNFA_CAMB, 
	   @CDFE_ASTO_CNTB, @VNIM_MVTO_ORIG, @VNIM_MVTO OUTPUT  
      End
  End  
 If @VSCO_MONE_CNTB != @CSCO_MONE     -- moneda contb != moneda movimiento  
  Begin  
    If @CSCO_MONE = @CSCO_MONE_PART   -- moneda movimiento = moneda partida  
       Select @VNIM_MVTO = @VNIM_MVTO_ORIG  
    If @CSCO_MONE != @CSCO_MONE_PART   -- moneda movimiento != moneda partida  
      Begin
       If @CNFA_CAMB = 1
        Begin
          Select @VNFA_CMPR_OFIC = Isnull(Max(FA_CMPR_OFIC), 1), @VNFA_VNTA_OFIC = Isnull(Max(FA_VNTA_OFIC), 1)
          From TCFACT_CAMB
          Where co_mone = @CSCO_MONE_PART
	   And co_mone_base = @VSCO_MONE_CNTB
	   And fe_camb = @CDFE_ASTO_CNTB
     
        If @CSTI_CAMB = 'COM'
          Select @CNFA_CAMB = @VNFA_CMPR_OFIC
        Else
          Select @CNFA_CAMB = @VNFA_VNTA_OFIC
       End

       Exec SP_CONV_MONE_Q03 @CSCO_EMPR, @CSCO_MONE, @CSCO_MONE_PART, @CSTI_CAMB, @CSTI_CAMB_PART, @CNFA_CAMB, 
	    @CDFE_ASTO_CNTB, @VNIM_MVTO_ORIG, @VNIM_MVTO OUTPUT  
      End
  End  
 -- Extrae porcentaje de Dominio  
 Select @VNPO_APLI_DOMI = Max(PO_APLI)  
   From OFIPRES..TMPRES_DOMI  
  Where CO_EMPR = @CSCO_EMPR  
    And NU_ANNO = @CNNU_ANNO  
    And CO_DOMI = @CSCO_DOMI  
  
 If @VNPO_APLI_DOMI IS NULL Select @VNPO_APLI_DOMI = 100  
 -- Realiza los calculos  
 Select @VNIM_MVTO = @VNIM_MVTO * (@VNPO_APLI_DOMI /100) -- Aplica % dominio  
 Select @VNIM_MVTO = @VNIM_MVTO * (@CNPO_APLI /100)  -- Aplica % configurado  
 Select @VNIM_MVTO = @VNIM_MVTO * (@CNTI_SIGN_CONT)  -- Aplica Signo - naturaleza  
 Select @VNIM_MVTO_ACUM = @VNIM_MVTO * (@CNTI_OPER_ARIT) -- Aplica Acumulador  

 --Actualiza datos Reales - TDPART_CONT  
 If @VNIM_MVTO_ACUM Is Null Select @VNIM_MVTO_ACUM = 0  
  Update OFIPRES..TDPART_CONT  
    Set IM_CONT = Isnull(IM_CONT, 0) + @VNIM_MVTO_ACUM  
   Where CO_EMPR = @CSCO_EMPR  
    And NU_ANNO = @CNNU_ANNO  
    And NU_MESE = @CNNU_MESE  
    And NU_REGI_EMPR = @CNNU_REGI_EMPR  
    And CO_PART = @CSCO_PART  
    And NU_SECU = @CNNU_SECU  

 --Actualiza datos Reales - TAPART_MENS  
 Update OFIPRES..TAPART_MENS  
    Set IM_EJEC = Isnull(IM_EJEC, 0)+ @VNIM_MVTO_ACUM  
  Where CO_EMPR = @CSCO_EMPR  
    And NU_ANNO = @CNNU_ANNO  
    And NU_MESE = @CNNU_MESE  
    And NU_REGI_EMPR = @CNNU_REGI_EMPR  
    And CO_PART = @CSCO_PART  
  
        Select @VNNU_SECU = Isnull(Max(NU_SECU), 0) + 1  
        From OFIPRES..TDMVTO_PART  
        Where CO_EMPR = @CSCO_EMPR  
   And NU_ANNO = @CNNU_ANNO  
   And NU_MESE = @CNNU_MESE  
   And NU_REGI_EMPR = @CNNU_REGI_EMPR  
   And CO_PART = @CSCO_PART  

        Select @VSDE_CAMB = 'TRANSACCION ' + Convert(Varchar(10), @CNFA_CAMB)

        Insert into OFIPRES..TDMVTO_PART(CO_EMPR, NU_ANNO,NU_MESE,NU_REGI_EMPR,CO_PART, NU_SECU,  
  TI_ORIG_MVTO,CO_SIST_ORIG,CO_UNID_CNTB,NU_ASTO,TI_AUXI_EMPR,  
         CO_AUXI_EMPR,CO_ORDE_SERV,TI_DOCU,NU_DOCU,FE_DOCU, CO_MONE,  
                FA_CAMB,IM_MVTO_ORIG,IM_MVTO_CNTB,IM_MVTO_PART, CN_CANT,  
                TI_DOCU_ORCO, NU_DOCU_ORCO,CO_USUA_CREA, FE_USUA_CREA,  
                CO_USUA_MODI, FE_USUA_MODI, DE_TIPO_CAMB)  
         values   
  (@CSCO_EMPR,@CNNU_ANNO,@CNNU_MESE,@CNNU_REGI_EMPR,@CSCO_PART,  
                 @VNNU_SECU,'EJE','OFICONT',@CSCO_UNID_CNTB,@CSNU_ASTO,  
                 @CSTI_AUXI_EMPR,@CSCO_AUXI_EMPR,@CSCO_ORDE_SERV,@CSTI_DOCU,  
                 @CSNU_DOCU,@CDFE_DOCU,@CSCO_MONE,@CNFA_CAMB,@CNIM_MVTO_ORIG,  
                 @CNIM_MVTO_CNTB,@VNIM_MVTO_ACUM,0,NULL,NULL,@CSCO_USUA_CREA,@CDFE_USUA_CREA,  
                 @CSCO_USUA_MODI, @CDFE_USUA_MODI, @VSDE_CAMB)  
  
      End  -- Fin Lee de Contabilidad  
    Fetch CT_TXMVTO_CNTB_I01_5 Into  
   @CNNU_REGI_EMPR, @CSCO_PART, @CNNU_SECU, @CNPO_APLI,  
   @CSCO_DOMI,  @CNTI_SIGN_CONT,@CNTI_OPER_ARIT,@CSCO_MONE_PART,  
   @CSTI_CAMB_PART  
    End -- END WHILE @@Fetch_Status = 0 - CURSOR 2  
   Close CT_TXMVTO_CNTB_I01_5  
   Deallocate CT_TXMVTO_CNTB_I01_5  
  
  End -- Fin si hay Sistema Presupuesto  
  
  Fetch CT_TXMVTO_CNTB_I01_4 Into  
   @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB,  
   @CNNU_ANNO,  @CNNU_MESE,  @CNNU_SECU_MVTO,  
   @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,  
   @CSCO_MONE,  @CSTI_OPER,  @CNIM_MVTO_ORIG,  
   @CNIM_MVTO_CNTB, @CSCO_ORDE_SERV, @CSSI_MVTO_CNTB,  
   @CDFE_ASTO_CNTB, @CSTI_CAMB,  @CNFA_CAMB,  
          @CSNU_ASTO,           @CSTI_DOCU,             @CSNU_DOCU,  
          @CDFE_DOCU,
   @CSCO_USUA_CREA, @CSCO_USUA_MODI,
   @CDFE_USUA_CREA, @CDFE_USUA_MODI     
  
  End -- END WHILE @@Fetch_Status = 0  
  Close CT_TXMVTO_CNTB_I01_4  
  Deallocate CT_TXMVTO_CNTB_I01_4  
  
--***********/  
  
end ---  If Exists( Select ST_OTRS From INSERTED  
  
End --(If Exists( Select NU_PROC From Deleted....)  
  
End  
Return
GO

CREATE Trigger [dbo].[tU_TXMVTO_CNTB_U01] ON [dbo].[TXMVTO_CNTB]
FOR UPDATE  
/*-------------------------------------------------------------------*/  
/*----- Empresa           : OFISIS S.A.                          ----*/  
/*----- Cliente           : OFISIS S.A.                          ----*/  
/*----- Sistema           : Contabilidad                         ----*/  
/*----- Modulo            : Empresa                              ----*/  
/*----- Programa          : Asientos de gestion en linea         ----*/  
/*----- Nombre            : tU_TXMVTO_CNTB_U01                   ----*/  
/*----- Script            : TXMVTO_CNTB                          ----*/  
/*----- Desarrollado por  : Marco Acua                           ----*/  
/*----- Fecha             : 10/02/2003                           ----*/  
/*----- Base de Datos     : MS SQL Server                        ----*/  
/*----- Version BD        : 7.0                                  ----*/  
/*-------------------------------------------------------------------*/  
/*-------------------------------------------------------------------*/  
/*----- Modificado 1 por : PDGV                    ----*/  
/*----- Fecha Modifica   : 26/04/2004                            ----*/  
/*----- Detalle Modifica : valido que exista el periodo para la op. de gestion  ---*/  
/*-------------------------------------------------------------------*/  
/*-------------------------------------------------------------------*/  
/*----- Modificado 2 por : YMT                    ----*/  
/*----- Fecha Modifica   : 26/06/2004                            ----*/  
/*----- Detalle Modifica : Se adiciono el IF al inicio del trigger para evitar loop con el trigger de   
auditoria U10  ---*/  
/*-------------------------------------------------------------------*/  
/*-------------------------------------------------------------------*/  
/*----- Modificado 3 por : PDGV                    ----*/  
/*----- Fecha Modifica   : 31/12/2004                            ----*/  
/*----- Detalle Modifica : GRABA ST_OTRS COMO NULL PARA QUE MAYORICE ,   
QUITO SELECTS INNECESARIOS Y SE VALIDO QUE ACTUALICE GESTION CASO ORI Y POR AUXILIAR ---*/  
/*-------------------------------------------------------------------*/  
/*-------------------------------------------------------------------*/  
/*----- Modificado 4 por : PDGV                    ----*/  
/*----- Fecha Modifica   : 08/01/2005                            ----*/  
/*----- Detalle Modifica : SE MODIFICO TRIGGERS PARA CASO ORI Y SE ANULE ASTO, ELIMINE GESTION  (DELETE) ----*/
/*-------------------------------------------------------------------*/  
/*-------------------------------------------------------------------*/  
/*------------ DROP Trigger tU_TXMVTO_CNTB_U01 ----------------------*/  
/*-------------------------------------------------------------------*/  
  
As  
If Update(CO_CNTA_EMPR) Or Update(TI_AUXI_EMPR) Or Update(CO_AUXI_EMPR) Or     
   Update(CO_ORDE_SERV) Or Update(TI_OPER) Or Update(IM_MVTO_ORIG) Or     
   Update(IM_MVTO_CNTB)  Or Update(SI_MVTO_CNTB)      
Begin  
Declare   
@CSCO_CNTA_CONT  TD_VC_020_CNTA,  
@CSCO_CNTA_DEST  TD_VC_020_CNTA,  
@CSCO_CNTA_EMPR   TD_VC_020_CNTA,  
@CSCO_ORDE_SERV         TD_VC_020,  
@VNNU_SECU  TD_IN_002,  
@CDFE_ASTO_CNTB   TD_DT_001,  
@CSCO_MONE   TD_VC_003,  
@CSTI_CAMB  TD_VC_003,  
@CNFA_CAMB   TD_NU_015_006,  
@CNIM_MVTO_ORIG  TD_NU_016_004,  
@CNIM_MVTO_CNTB  TD_NU_016_004,  
@VSTI_OPER  TD_VC_003,  
@CSTI_OPER_CNTB  TD_VC_003,  
@CSDE_GLOS  TD_VC_100,  
@CSCO_OPRC_ORIG      TD_VC_003,  
@CSCO_UNID_ORIG         TD_VC_003,  
@CSNS_ASTO_ORIG         TD_VC_010,  
@CDFE_DOCU_VENC  TD_DT_001,   
@CNFA_CAMB_DIAR  TD_NU_015_006,   
@CDFE_DOCU_REFE  TD_DT_001,   
@VSCO_OPRC_GEST      TD_VC_003,  
@CNNU_PROC  TD_IN_001,   
@CNNU_PROC_SECU  TD_IN_001,  
@CSTI_AUXI_EMPR   TD_VC_001,  
@CSCO_AUXI_EMPR   TD_VC_020,  
@CSST_AUXI_EMPR       TD_VC_001,  
@VSST_AUXI_DEST       TD_VC_001,  
@VSST_AUXI_CONT       TD_VC_001,  
@VNFA_CMPR_OFIC         TD_NU_015_006,  
@VNFA_VNTA_OFIC         TD_NU_015_006,   
@VNFA_CAMB_DIAR         TD_NU_015_006,  
@VSCO_MONE  TD_VC_003,  
@CNNU_SECU              TD_IN_002,  
@CSCO_EMPR              TD_VC_002,  
@CNNU_CNTB_EMPR         TD_IN_001,  
@VSCO_CNTA_DEST         TD_VC_020,  
@VSCO_CNTA_CONT         TD_VC_020,  
@VSST_CNTA_CAMB         TD_VC_003,  
@VSST_AUXI_0001         TD_VC_001,  
@VSST_AUXI_0002         TD_VC_001,  
@VSST_ASIE_GEST         TD_VC_003,  
@CSSI_MVTO_CNTB         TD_VC_003,  
@CNNU_ANNO              TD_IN_001,  
@CNNU_MESE              TD_IN_001,  
@VSNU_ASTO              TD_VC_010,  
@VSST_GEST_LINE         TD_VC_001,  
@VSCO_OPRC_0001         TD_VC_003,  
@VSST_ASIE_APRO         TD_VC_001,  
---------- Variables Gestion --------------------  
@CSCO_UNID_CNTB         TD_VC_003,  
@CSCO_OPRC_CNTB         TD_VC_003,  
@CSNU_ASTO              TD_VC_010,  
@VSCO_OPRC_CNTB         TD_VC_003,  
@VSST_ORDE_0001         TD_VC_001,  
@VSST_ORDE_0002         TD_VC_001,  
@VSTI_AUXI_EMPR   TD_VC_001,  
@VSCO_AUXI_EMPR   TD_VC_020,  
@VSCO_ORDE_SERV         TD_VC_020,  
---------- Variable Fecha de Proceso ------------  
@CSTI_OPER  TD_VC_003,  
@VNIM_CARG_ORIG  TD_NU_016_004,  
@VNIM_ABON_ORIG  TD_NU_016_004,  
@VNIM_CARG_CNTB  TD_NU_016_004,  
@VNIM_ABON_CNTB  TD_NU_016_004,  
@VSST_CIER_CNTB  TD_VC_001,  
@VSDE_ERRO  TD_VC_050,  
@CSST_DIFE_CAMB  TD_VC_001,   
@CSST_DIFE_MAYO  TD_VC_001, 
@VSST_FLAG_GEST  TD_VC_001,

@CSCO_USUA_CREA         TD_VC_008,
@CSCO_USUA_MODI         TD_VC_008,
@CDFE_USUA_CREA         TD_DT_001_SIST,
@CDFE_USUA_MODI         TD_DT_001_SIST,
@CSST_RECU		TD_VC_001_SINO
--Solo se Ejecuta si el numero de Proceso es Nulo o Cero  
/*If Exists( Select NU_PROC From inserted  
           Where  NU_PROC = Null Or NU_PROC = 0 )  
Begin  
*/  
Select @VSST_FLAG_GEST = 'N' 
If Update(SI_MVTO_CNTB) 
Begin 
 Select @VSST_FLAG_GEST = 'S' 
End 

Select @CSTI_AUXI_EMPR = Null  
Select @CSCO_AUXI_EMPR = Null  
Select @VSST_GEST_LINE = NULL  
Select @VSST_ASIE_GEST = NULL  
Select @VSCO_CNTA_CONT = NULL  
Select @VSCO_CNTA_DEST = NULL  
  
Declare CT_TXMVTO_CNTB_U01_1 Cursor For  
Select T1.CO_EMPR, T1.NU_CNTB_EMPR, T1.CO_UNID_CNTB, T1.CO_OPRC_CNTB, T1.NU_ASTO, T1.NU_SECU, T1.FE_ASTO_CNTB, T1.CO_CNTA_EMPR, 
 T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR, T1.CO_MONE, T1.TI_CAMB, T1.FA_CAMB, T1.TI_OPER, Round(T1.IM_MVTO_ORIG, 2), Round(T1.IM_MVTO_CNTB, 2),   
 T1.DE_GLOS, T1.SI_MVTO_CNTB, T1.FE_DOCU_VENC, T1.FA_CAMB_DIAR, T1.FE_DOCU_REFE, T1.NU_PROC, T1.NU_PROC_SECU, LTRIM(RTRIM(T1.CO_ORDE_SERV)), 
 T1.NU_ANNO, T1.NU_MESE, T1.ST_DIFE_CAMB, T1.ST_DIFE_MAYO, T1.CO_USUA_CREA, T1.CO_USUA_MODI, T1.FE_USUA_CREA, T1.FE_USUA_MODI, 
 T2.ST_RECU 
From inserted T1, TMPARA_CONT T2
Where T1.CO_EMPR = T2.CO_EMPR
          
Open CT_TXMVTO_CNTB_U01_1  
Fetch CT_TXMVTO_CNTB_U01_1 into  
 @CSCO_EMPR,@CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG, @CSNS_ASTO_ORIG,@CNNU_SECU, @CDFE_ASTO_CNTB, 
 @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_MONE, @CSTI_CAMB, @CNFA_CAMB, @CSTI_OPER_CNTB, 
 @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSDE_GLOS, @CSSI_MVTO_CNTB, @CDFE_DOCU_VENC, @CNFA_CAMB_DIAR, 
 @CDFE_DOCU_REFE, @CNNU_PROC, @CNNU_PROC_SECU, @CSCO_ORDE_SERV, @CNNU_ANNO, @CNNU_MESE, @CSST_DIFE_CAMB, 
 @CSST_DIFE_MAYO, @CSCO_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_CREA, @CDFE_USUA_MODI, @CSST_RECU
  
While @@Fetch_Status = 0  
  Begin  
   If @@Fetch_Status < 0  
     Begin  
       Close CT_TXMVTO_CNTB_U01_1  
       Deallocate CT_TXMVTO_CNTB_U01_1  
     End  
  
   Select @VSST_ASIE_GEST = ST_ASIE_GEST, @VSST_GEST_LINE = ST_GEST_LINE  
   From TMPARA_CONT  
   Where CO_EMPR = @CSCO_EMPR  
  
   Select @VSCO_OPRC_GEST = CO_OPRC_CNTB   
   From TTIDEN_OPER  
   Where CO_EMPR = @CSCO_EMPR   
   And ID_OPRC = '011'   
   And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
  
-- Inicio  
   Select @VSST_CIER_CNTB = ST_CIER_CNTB  
   From  TCFECH_PROC  
   Where CO_EMPR = @CSCO_EMPR  
   and  NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
   and  CO_UNID_CNTB = @CSCO_UNID_ORIG  
   and  CO_OPRC_CNTB = @VSCO_OPRC_GEST  
   and  NU_ANNO = @CNNU_ANNO  
   and  NU_MESE = @CNNU_MESE  
  
   If @VSST_CIER_CNTB = 'S'   
     Begin  
      Select @VSDE_ERRO = 'El periodo esta bloqueado'  
      RAISERROR 50000 @VSDE_ERRO  
      ROLLBACK TRANSACTION   
     End  
  
  If (@VSST_CIER_CNTB Is NULL Or Rtrim(@VSST_CIER_CNTB) = '') And @VSST_ASIE_GEST = 'COP' And @VSST_GEST_LINE = 'S'  
    Begin  
      Select @VSDE_ERRO = 'El Periodo para la Operación Gestión No esta Aperturado'  
      RAISERROR 50000 @VSDE_ERRO  
      ROLLBACK TRANSACTION  
    End  
-- Fin  
  
   -- Si gestion es en linea  
   If @VSST_GEST_LINE = 'S'  
   Begin  
       Select @VSCO_CNTA_DEST = CO_CNTA_DEST,  
              @VSCO_CNTA_CONT = CO_CNTA_CONT,  
              @VSST_CNTA_CAMB = ST_CNTA_CAMB  
       From TMPLAN_ANNO  
       Where CO_EMPR = @CSCO_EMPR  
         And CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
  
     If IsNull(Rtrim(@VSCO_CNTA_DEST), '') = ''  Or  IsNull(Rtrim(@VSCO_CNTA_CONT), '') = ''  
       Begin  
         Select @VSCO_CNTA_DEST = CO_CNTA_DEST, @VSCO_CNTA_CONT = CO_CNTA_CONT  
         From TRAUXI_GEST  
         Where CO_EMPR = @CSCO_EMPR  
         And CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
         And TI_AUXI_EMPR = @CSTI_AUXI_EMPR  
         And  CO_AUXI_EMPR = @CSCO_AUXI_EMPR  
         And NU_ANNO = 9999  
       End   
  
   End /*fin    If @VSST_GEST_LINE = 'S'*/  
  
---- SI ES GESTION COP ENTONCES HACE DELETE EN LA OPERACION DE GESTION   
  
   If @VSST_ASIE_GEST = 'COP' Or (@VSST_ASIE_GEST = 'ORI' And @VSST_FLAG_GEST = 'S')   
   Begin  
     If @VSST_GEST_LINE ='S'   
     Begin  
 
       If IsNull(Rtrim(@VSCO_CNTA_DEST), '') = ''  OR  IsNull(Rtrim(@VSCO_CNTA_CONT), '') = ''  
       Begin  
         Select @VSCO_CNTA_DEST = CO_CNTA_DEST, @VSCO_CNTA_CONT = CO_CNTA_CONT  
         From TRAUXI_GEST  
         Where CO_EMPR = @CSCO_EMPR  
         And CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
         And TI_AUXI_EMPR = @CSTI_AUXI_EMPR  
         And  CO_AUXI_EMPR = @CSCO_AUXI_EMPR  
         And NU_ANNO = 9999  
       End  
  
       Select @VSST_AUXI_0001 = ST_AUXI_EMPR, @VSST_ORDE_0001 = ST_ORDE_SERV  
       From TMPLAN_ANNO  
       Where CO_EMPR = @CSCO_EMPR  
         And CO_CNTA_EMPR = @VSCO_CNTA_DEST  
  
  
       Select @VSST_AUXI_0002 = ST_AUXI_EMPR, @VSST_ORDE_0002 = ST_ORDE_SERV  
       From TMPLAN_ANNO  
       Where CO_EMPR = @CSCO_EMPR  
       And CO_CNTA_EMPR = @VSCO_CNTA_CONT  
     
      
      If @VSST_ASIE_GEST = 'COP'
       Begin 
       Select @VSNU_ASTO = ISNULL(MAX(NU_ASTO),'0000000001')  
       From TXMVTO_CNTB  
       Where CO_EMPR = @CSCO_EMPR  
         And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
         And CO_UNID_CNTB = @CSCO_UNID_ORIG  
         And CO_OPRC_CNTB = @VSCO_OPRC_GEST  
         And NU_ANNO = @CNNU_ANNO  
         And NU_MESE = @CNNU_MESE   
       End 

      If @VSST_ASIE_GEST = 'ORI'
       Begin 
          Select @VSCO_OPRC_GEST = @CSCO_OPRC_ORIG
          Select @VSNU_ASTO = @CSNS_ASTO_ORIG
       End 

   
       Select @VNNU_SECU = ISNULL(MAX(NU_SECU),0)  
       From TXMVTO_CNTB  
       Where CO_EMPR = @CSCO_EMPR  
         And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
         And CO_UNID_CNTB = @CSCO_UNID_ORIG  
         And CO_OPRC_CNTB = @VSCO_OPRC_GEST  
         And NU_ANNO = @CNNU_ANNO  
         And NU_MESE = @CNNU_MESE  
         And NU_ASTO = @VSNU_ASTO  
	
	If @CSST_RECU = 'N'
          EXEC SP_TXMVTO_CNTB_D04 @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @VSCO_OPRC_GEST, 
  	    @CNNU_ANNO, @CNNU_MESE, @CSNS_ASTO_ORIG, @CNNU_SECU, @CSCO_CNTA_EMPR    
  
        DELETE From TXMVTO_CNTB  
        Where CO_EMPR = @CSCO_EMPR  
        And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
        And CO_UNID_CNTB  = @CSCO_UNID_ORIG  
        And CO_OPRC_CNTB = @VSCO_OPRC_GEST   
        And NU_ANNO = @CNNU_ANNO  
        And NU_MESE = @CNNU_MESE  
        And NU_ASTO = @VSNU_ASTO  
        And NU_SECU_ORIG = @CNNU_SECU  
        And CO_UNID_ORIG = @CSCO_UNID_ORIG  
        And CO_OPRC_ORIG = @CSCO_OPRC_ORIG  
        And NU_ASTO_ORIG = @CSNS_ASTO_ORIG  
        And ST_GEST = 'S'  
  
      If @CSSI_MVTO_CNTB = 'APR'  -- SOLO SI ESTA APROBADO INSERTA 
      Begin  
         
         If @CSTI_OPER_CNTB = 'ABO'  
            Select @VSTI_OPER = 'CAR'  
         Else  
            Select @VSTI_OPER = 'ABO'  
  
      If IsNull(RTRIM(@VSCO_CNTA_CONT), '') != '' And IsNull(RTRIM(@VSCO_CNTA_DEST), '') != ''  
        Begin  
         If @VSST_AUXI_0001= 'N'  
           Begin  
             Select @VSTI_AUXI_EMPR = NULL  
             Select @VSCO_AUXI_EMPR = NULL  
           End  
         Else  
           Begin  
             Select @VSTI_AUXI_EMPR = @CSTI_AUXI_EMPR  
             Select @VSCO_AUXI_EMPR = @CSCO_AUXI_EMPR  
           End  
  
         If @VSST_ORDE_0001 = 'N'  
           Select @VSCO_ORDE_SERV = NULL  
         Else  
           Select @VSCO_ORDE_SERV = @CSCO_ORDE_SERV  
  
          Select @VNNU_SECU = @VNNU_SECU + 1  
          Insert Into TXMVTO_CNTB  
       ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,  
      NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,  
      TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,  
      IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, CO_UNID_ORIG, CO_OPRC_ORIG,   
      NU_ASTO_ORIG, FE_DOCU_VENC, FA_CAMB_DIAR, FE_DOCU_REFE,  
      NU_PROC, NU_PROC_SECU, CO_ORDE_SERV, ST_GEST, ST_REDO, CO_CNTA_ORIG, NU_SECU_ORIG,  
      ST_OTRS, ST_DIFE_CAMB, ST_DIFE_MAYO,
     CO_USUA_CREA,CO_USUA_MODI,FE_USUA_CREA,FE_USUA_MODI  )  
          Values  
       ( @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @VSCO_OPRC_GEST,  
      @CNNU_ANNO, @CNNU_MESE,@VSNU_ASTO, @VNNU_SECU, @CDFE_ASTO_CNTB,  
      @VSCO_CNTA_DEST, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR, NULL, NULL, NULL, @CSTI_CAMB,  
      @CSCO_MONE, @CNFA_CAMB, @CSTI_OPER_CNTB, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB,  
      @CSDE_GLOS, @CSSI_MVTO_CNTB, @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG,  
      @CSNS_ASTO_ORIG, @CDFE_DOCU_VENC, @CNFA_CAMB_DIAR, @CDFE_DOCU_REFE,   
      @CNNU_PROC, @CNNU_PROC_SECU, @VSCO_ORDE_SERV, 'S', 'N',@CSCO_CNTA_EMPR,  
      @CNNU_SECU, NULL, @CSST_DIFE_CAMB, @CSST_DIFE_MAYO,
      @CSCO_USUA_CREA,@CSCO_USUA_MODI,@CDFE_USUA_CREA,@CDFE_USUA_MODI )  

      If @CSST_RECU = 'N'
        EXEC SP_TXMVTO_CNTB_I47 @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @VSCO_OPRC_GEST, 
  	  @CNNU_ANNO, @CNNU_MESE, @VSNU_ASTO, @VNNU_SECU
   
          /*Incrementa el contador de registros */  
          Select @VNNU_SECU = @VNNU_SECU + 1  
          If @VSST_AUXI_0002= 'N'  
           Begin  
             Select @VSTI_AUXI_EMPR = NULL  
             Select @VSCO_AUXI_EMPR = NULL  
           End  
          Else  
           Begin  
             Select @VSTI_AUXI_EMPR = @CSTI_AUXI_EMPR  
             Select @VSCO_AUXI_EMPR = @CSCO_AUXI_EMPR  
           End  
  
          If @VSST_ORDE_0002 = 'N'  
           Select @VSCO_ORDE_SERV = NULL  
          Else  
	   Select @VSCO_ORDE_SERV = @CSCO_ORDE_SERV  
  
          Insert Into TXMVTO_CNTB  
   ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,  
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,  
     TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,  
     IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, CO_UNID_ORIG, CO_OPRC_ORIG,   
     NU_ASTO_ORIG, FE_DOCU_VENC, FA_CAMB_DIAR, FE_DOCU_REFE,  
     NU_PROC, NU_PROC_SECU, CO_ORDE_SERV, ST_GEST, ST_REDO, CO_CNTA_ORIG,NU_SECU_ORIG,  
     ST_OTRS, ST_DIFE_CAMB, ST_DIFE_MAYO, CO_USUA_CREA,CO_USUA_MODI,FE_USUA_CREA,FE_USUA_MODI    )  
          Values  
   ( @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @VSCO_OPRC_GEST,  
     @CNNU_ANNO, @CNNU_MESE, @VSNU_ASTO, @VNNU_SECU, @CDFE_ASTO_CNTB,  
     @VSCO_CNTA_CONT, @VSTI_AUXI_EMPR, @VSCO_AUXI_EMPR, NULL, NULL, NULL, @CSTI_CAMB,  
     @CSCO_MONE, @CNFA_CAMB, @VSTI_OPER, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB,  
     @CSDE_GLOS, @CSSI_MVTO_CNTB, @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG,  
     @CSNS_ASTO_ORIG, @CDFE_DOCU_VENC, @CNFA_CAMB_DIAR, @CDFE_DOCU_REFE,   
     @CNNU_PROC, @CNNU_PROC_SECU, @VSCO_ORDE_SERV, 'S', 'N', @CSCO_CNTA_EMPR,@CNNU_SECU,  
     NULL, @CSST_DIFE_CAMB, @CSST_DIFE_MAYO,
     @CSCO_USUA_CREA,@CSCO_USUA_MODI,@CDFE_USUA_CREA,@CDFE_USUA_MODI )  

	If @CSST_RECU = 'N'
 	  EXEC SP_TXMVTO_CNTB_I47 @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @VSCO_OPRC_GEST, @CNNU_ANNO, @CNNU_MESE, 
	    @VSNU_ASTO, @VNNU_SECU

        Select @VNNU_SECU = @VNNU_SECU + 1  
       End -- If RTRIM(@VSCO_CNTA_CONT) IS NOT Null And RTRIM(@VSCO_CNTA_DEST) IS NOT Null  
      END  
     END -- DE ST_GEST_LINE ='S'  
   END -- END DEL If DE COP  
Fetch CT_TXMVTO_CNTB_U01_1 into  
 @CSCO_EMPR,@CNNU_CNTB_EMPR, @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG, @CSNS_ASTO_ORIG,@CNNU_SECU, @CDFE_ASTO_CNTB, 
 @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_MONE, @CSTI_CAMB, @CNFA_CAMB, @CSTI_OPER_CNTB, 
 @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSDE_GLOS, @CSSI_MVTO_CNTB, @CDFE_DOCU_VENC, @CNFA_CAMB_DIAR, @CDFE_DOCU_REFE, 
 @CNNU_PROC, @CNNU_PROC_SECU, @CSCO_ORDE_SERV, @CNNU_ANNO, @CNNU_MESE, @CSST_DIFE_CAMB, @CSST_DIFE_MAYO,
 @CSCO_USUA_CREA,@CSCO_USUA_MODI,@CDFE_USUA_CREA,@CDFE_USUA_MODI, @CSST_RECU
End -- END DEL WHILE  
  
Close CT_TXMVTO_CNTB_U01_1  
Deallocate CT_TXMVTO_CNTB_U01_1  
  
--- End --(If Exists( Select NU_PROC From Deleted....)  
  
End  
Return  
-------------------------------------- Fin ---------------------------------------
GO

CREATE Trigger [dbo].[TU_TXMVTO_CNTB_U02] On [dbo].[TXMVTO_CNTB]
For Update
/*---------------------------------------------------------*/
/*---- Empresa              : OFISIS S.A.              ----*/
/*---- Cliente              : OFISIS S.A.              ----*/
/*---- Sistema              : OFICONT                  ----*/
/*---- M>dulo               : Empresa		       ----*/
/*---- Programa             : mayorizaci n en linea    ----*/
/*---- Script               : 			       ----*/
/*---- Nombre TR            : TU_TXMVTO_CNTB_U02       ----*/
/*---- Desarrollado por     : LGP		       ----*/
/*---- Fecha Creaci>n       : 22/02/2003	       ----*/
/*---- Base de Datos        : SQL                      ----*/
/*---- Versi>n              : 8.0                      ----*/
/*---- Invoca a SP          :                          ----*/
/*---------------------------------------------------------*/
/*---- Modificado 1 por     : YMT                      ----*/
/*---- Fecha Modificaci>n   : 18/06/2004               ----*/
/*---- Detalle Modificaci>n : Default del Usuario      ----*/
/*---------------------------------------------------------*/
/*---------------------------------------------------------------------*/  
/*----- Modificado 5 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 30/06/2006                             -----*/  
/*----- Detalle Modifica : se aumento el tamaño de la @VSNV_QUIE_CNTA de 10 a 40-----*/  
/*---------------------------------------------------------------------*/  
/*---- Comentarios: genera saldos cuando se aprueba    ----*/
/*---- un voucher				       ----*/
/*---- Drop Trigger TU_TXMVTO_CNTB_U02                 ----*/
/*---------------------------------------------------------*/
/*---- Se ejecuta con el INSERT de la Tabla            ----*/
/*---------------------------------------------------------*/
As
If Update(SI_MVTO_CNTB) 
Begin
Declare 
  @CSCO_EMPR      	TD_VC_002,
  @CNNU_CNTB_EMPR  	TD_IN_001,
  @CSCO_UNID_CNTB  	TD_VC_003,
  @CSCO_OPRC_CNTB     	TD_VC_003,
  @CNNU_ANNO            TD_IN_001,
  @CNNU_MESE            TD_IN_001,
  @CSNU_ASTO            TD_VC_010,
  @CNNU_SECU		TD_IN_002,
  @CDFE_ASTO_CNTB  	TD_DT_001,
  @CSCO_CNTA_EMPR	TD_VC_020,
  @CSTI_AUXI_EMPR       TD_VC_001,
  @CSCO_AUXI_EMPR       TD_VC_020,
  @CSCO_MONE 		TD_VC_003,
  @CSTI_OPER		TD_VC_003,
  @CNIM_MVTO_ORIG	TD_NU_016_004,
  @CNIM_MVTO_CNTB	TD_NU_016_004,
  @VNIM_CARG_ORIG	TD_NU_016_004,
  @VNIM_ABON_ORIG	TD_NU_016_004,
  @VNIM_CARG_CNTB	TD_NU_016_004,
  @VNIM_ABON_CNTB	TD_NU_016_004,
  @CSSI_MVTO_CNTB       TD_VC_003,
  @CSCO_ORDE_SERV	TD_VC_020,
  @VSPR_DATO		TD_VC_020,
  @CSSI_MVTO_ANTE       TD_VC_003,
-- Variables Loop --
  @VNNV_INFO_CNTA       TD_IN_001,
  @VSNV_QUIE_CNTA       TD_VC_040,
  @VNCA_INIC            TD_IN_001,
  @VNCA_LONG            TD_IN_001,
  @VNCA_LONG_AUXI       TD_IN_001,
  @VNNV_AUXI            TD_IN_001,
  @VNNU_FINA            TD_IN_001,
------------------- Variables Actualiza Datos Reales ----------------------------
  @CNNU_SECU_MVTO	TD_IN_002,
  @VNIM_MVTO_ORIG	TD_NU_016_004,
  @VNIM_MVTO_CNTB	TD_NU_016_004,
  @VSDE_CADE_IMPR	TD_VC_020,
  @VSCO_MONE_CNTB	TD_VC_003,
  @CNNU_REGI_EMPR	TD_IN_001,
  @CSCO_PART		TD_VC_020,
  @CNPO_APLI		TD_NU_015_006,
  @CSCO_DOMI		TD_VC_003,
  @CNTI_SIGN_CONT	TD_IN_001,
  @CNTI_OPER_ARIT	TD_IN_001,
  @CSCO_MONE_PART	TD_VC_003,
  @CSTI_CAMB_PART	TD_VC_003, 
  @VNIM_MVTO		TD_NU_016_004,
  @VNIM_MVTO_ACUM	TD_NU_016_004,
  @VNPO_APLI_DOMI	TD_NU_015_006,
  @CSTI_CAMB		TD_VC_003,
  @CNFA_CAMB		TD_NU_015_006,
  @VSST_PRES		TD_VC_001,
  @CSTI_DOCU            TD_VC_003,
  @CSNU_DOCU            TD_VC_020,
  @CDFE_DOCU            TD_DT_001,
  @VNNU_SECU            TD_IN_002,

@CSCO_USUA_CREA         TD_VC_008,
@CSCO_USUA_MODI         TD_VC_008,
@CDFE_USUA_CREA         TD_DT_001_SIST,
@CDFE_USUA_MODI         TD_DT_001_SIST

--Solo se Ejecuta si el numero de Proceso es Nulo o Cero
/*If Exists( Select NU_PROC From inserted
           Where  NU_PROC = Null Or NU_PROC = 0 )
Begin
*/
------------------- Mayorizaci>n en Linea ---------------------------------------
  Select @VNIM_CARG_ORIG = 0.00
  Select @VNIM_CARG_CNTB = 0.00
  Select @VNIM_ABON_ORIG = 0.00
  Select @VNIM_ABON_CNTB = 0.00

  Declare CT_TXMVTO_CNTB_U02_1 Cursor
  For
  Select  T1.CO_EMPR,	T1.NU_CNTB_EMPR, 	T1.CO_UNID_CNTB,	T1.CO_OPRC_CNTB,	T1.NU_ANNO,
	  T1.NU_MESE,	T1.NU_ASTO,      	T1.NU_SECU, 	        T1.FE_ASTO_CNTB, 	T1.CO_CNTA_EMPR,
 	  T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR,	T1.CO_MONE, 		T1.TI_OPER,	       	Round(T1.IM_MVTO_ORIG, 2), 
	  Round(T1.IM_MVTO_CNTB, 2), T1.SI_MVTO_CNTB, 	LTRIM(RTRIM(T1.CO_ORDE_SERV)),
  CO_USUA_CREA,CO_USUA_MODI,FE_USUA_CREA,FE_USUA_MODI  
  From inserted T1
/*  Where T1.CO_OPRC_CNTB NOT IN (SELECT T2.CO_OPRC_CNTB FROM TTIDEN_OPER T2
		  where T1.CO_EMPR = T2.CO_EMPR 
		  And T1.NU_CNTB_EMPR = T2.NU_CNTB_EMPR
		  And T2.ID_OPRC = '013')*/

  Open  CT_TXMVTO_CNTB_U02_1
  Fetch CT_TXMVTO_CNTB_U02_1 Into
	  @CSCO_EMPR,		@CNNU_CNTB_EMPR,	@CSCO_UNID_CNTB,
	  @CSCO_OPRC_CNTB,	@CNNU_ANNO,		@CNNU_MESE,
	  @CSNU_ASTO,		@CNNU_SECU,		@CDFE_ASTO_CNTB,
	  @CSCO_CNTA_EMPR,	@CSTI_AUXI_EMPR,	@CSCO_AUXI_EMPR,
	  @CSCO_MONE,		@CSTI_OPER,		@CNIM_MVTO_ORIG,
	  @CNIM_MVTO_CNTB,	@CSSI_MVTO_CNTB,	@CSCO_ORDE_SERV,
          @CSCO_USUA_CREA,@CSCO_USUA_MODI,@CDFE_USUA_CREA,@CDFE_USUA_MODI    

  While @@Fetch_Status = 0
  Begin
    If  @@Fetch_Status < 0
      Begin
        Close CT_TXMVTO_CNTB_U02_1
        Deallocate CT_TXMVTO_CNTB_U02_1
      End

    If @CSTI_AUXI_EMPR = ''
       Select @CSTI_AUXI_EMPR = NULL
    If @CSCO_AUXI_EMPR = ''
       Select @CSCO_AUXI_EMPR = NULL
    If @CSCO_ORDE_SERV = '' 
       Select @CSCO_ORDE_SERV = NULL
-- Inicio
    If @CSTI_OPER = 'CAR'
      Begin
        Select @VNIM_CARG_ORIG = @CNIM_MVTO_ORIG
        Select @VNIM_CARG_CNTB = @CNIM_MVTO_CNTB
	Select @VNIM_ABON_ORIG = 0
	Select @VNIM_ABON_CNTB = 0
      End
    Else If @CSTI_OPER = 'ABO'
      Begin
        Select @VNIM_CARG_ORIG = 0
        Select @VNIM_CARG_CNTB = 0
	Select @VNIM_ABON_ORIG = @CNIM_MVTO_ORIG
	Select @VNIM_ABON_CNTB = @CNIM_MVTO_CNTB
      End

    Select @VSPR_DATO = replicate('0',@CNNU_MESE) + '1' + replicate('0',20-(@CNNU_MESE+1))

    Select  @CSSI_MVTO_ANTE = SI_MVTO_CNTB
     From   Deleted
     Where  CO_EMPR = @CSCO_EMPR
     And    NU_CNTB_EMPR = @CNNU_CNTB_EMPR
     And    CO_UNID_CNTB = @CSCO_UNID_CNTB
     And    CO_OPRC_CNTB = @CSCO_OPRC_CNTB
     And    NU_ANNO = @CNNU_ANNO
     And    NU_MESE = @CNNU_MESE
     And    NU_ASTO = @CSNU_ASTO
     And    NU_SECU = @CNNU_SECU

    If @CSSI_MVTO_CNTB = 'APR'
      Begin
	If NOT EXISTS(SELECT CO_CNTA_EMPR
                    FROM TASALD_EMPR
                   WHERE CO_EMPR = @CSCO_EMPR
                     AND CO_UNID_CNTB = @CSCO_UNID_CNTB
		     AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
		     AND NU_ANNO = @CNNU_ANNO
		     AND NU_MESE = @CNNU_MESE
                     AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
		     And TI_AUXI_EMPR IS NULL
		     And CO_AUXI_EMPR IS NULL
		     And CO_ORDE_SERV IS NULL )
          Begin
            Insert Into TASALD_EMPR
	    Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,
	  	    @CSCO_CNTA_EMPR, NULL, NULL, NULL, @VNIM_CARG_CNTB, @VNIM_ABON_CNTB, 
		    @VNIM_CARG_ORIG, @VNIM_ABON_ORIG, @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA, 
		    @CSCO_USUA_MODI, @CDFE_USUA_MODI)
	  End
	Else
          Update TASALD_EMPR
	  Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),
	       IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),
	       IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),
	       IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),
	       CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
	  WHERE CO_EMPR = @CSCO_EMPR
          AND CO_UNID_CNTB = @CSCO_UNID_CNTB
	  AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
	  AND NU_ANNO = @CNNU_ANNO
 	  AND NU_MESE = @CNNU_MESE
          AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
	  AND TI_AUXI_EMPR IS NULL
	  AND CO_AUXI_EMPR IS NULL
	  AND CO_ORDE_SERV IS NULL

        -- Caso Cuenta - SI Auxiliar - SI Orden Servicio  
	If @CSTI_AUXI_EMPR IS NOT NULL AND @CSCO_AUXI_EMPR IS NOT NULL AND @CSCO_ORDE_SERV IS NOT NULL 
	  Begin 
 	    If NOT EXISTS (SELECT CO_CNTA_EMPR 
                  	FROM TASALD_EMPR 
	               WHERE CO_EMPR = @CSCO_EMPR
        	         AND CO_UNID_CNTB = @CSCO_UNID_CNTB
			 AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
			 AND NU_ANNO = @CNNU_ANNO 			 AND NU_MESE = @CNNU_MESE
	                 AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
		         AND TI_AUXI_EMPR = @CSTI_AUXI_EMPR
		     	 AND CO_AUXI_EMPR = @CSCO_AUXI_EMPR
			 AND CO_ORDE_SERV = @CSCO_ORDE_SERV) 
	    Begin
 	      -- Inserta aquellos que tienen auxiliares Con o Sin Orden Servicio
              Insert Into TASALD_EMPR
              Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,
	 	      @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_ORDE_SERV, 
		      @VNIM_CARG_CNTB, @VNIM_ABON_CNTB, @VNIM_CARG_ORIG, @VNIM_ABON_ORIG, 
		      @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)
	    End
 	    Else
            Update TASALD_EMPR
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),
	         IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),
	         IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),
	         IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),
	       CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
            WHERE CO_EMPR = @CSCO_EMPR
            AND CO_UNID_CNTB = @CSCO_UNID_CNTB
            AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
            AND NU_ANNO = @CNNU_ANNO
            AND NU_MESE = @CNNU_MESE
            AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
            AND TI_AUXI_EMPR = @CSTI_AUXI_EMPR
            AND CO_AUXI_EMPR = @CSCO_AUXI_EMPR
	    AND CO_ORDE_SERV = @CSCO_ORDE_SERV
	  End

        -- Caso Cuenta - SI Auxiliar - SI/NO Orden Servicio  
	If @CSTI_AUXI_EMPR IS NOT NULL AND @CSCO_AUXI_EMPR IS NOT NULL AND @CSCO_ORDE_SERV IS NULL
	  Begin 
 	    If NOT EXISTS (SELECT CO_CNTA_EMPR 
                  	FROM TASALD_EMPR 
	               WHERE CO_EMPR = @CSCO_EMPR
        	         AND CO_UNID_CNTB = @CSCO_UNID_CNTB
			 AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
			 AND NU_ANNO = @CNNU_ANNO
			 AND NU_MESE = @CNNU_MESE
	                 AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
		         AND TI_AUXI_EMPR = @CSTI_AUXI_EMPR
		     	 AND CO_AUXI_EMPR = @CSCO_AUXI_EMPR
			 AND CO_ORDE_SERV IS NULL) --= NULL) 
	    Begin
 	      -- Inserta aquellos que tienen auxiliares Con o Sin Orden Servicio
              Insert Into TASALD_EMPR
              Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,
	 	      @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, NULL, 
		      @VNIM_CARG_CNTB, @VNIM_ABON_CNTB, @VNIM_CARG_ORIG, @VNIM_ABON_ORIG, 
		      @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)
	    End
 	    Else
            Update TASALD_EMPR
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),
	         IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),
	         IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),
	         IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),
	       CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
            WHERE CO_EMPR = @CSCO_EMPR
            AND CO_UNID_CNTB = @CSCO_UNID_CNTB
            AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
            AND NU_ANNO = @CNNU_ANNO
            AND NU_MESE = @CNNU_MESE
            AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
            AND TI_AUXI_EMPR = @CSTI_AUXI_EMPR
            AND CO_AUXI_EMPR = @CSCO_AUXI_EMPR
	    AND CO_ORDE_SERV IS NULL--= NULL
	  End

        -- Caso Cuenta - NO Auxiliar - CON Orden Servicio  
	If @CSTI_AUXI_EMPR IS NULL AND @CSCO_AUXI_EMPR IS NULL AND @CSCO_ORDE_SERV IS NOT NULL
	  Begin
            If NOT EXISTS(SELECT CO_CNTA_EMPR
                    FROM TASALD_EMPR
                   WHERE CO_EMPR = @CSCO_EMPR
                     AND CO_UNID_CNTB = @CSCO_UNID_CNTB
		     AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
		     AND NU_ANNO = @CNNU_ANNO
		     AND NU_MESE = @CNNU_MESE
                     AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
		     AND TI_AUXI_EMPR Is NULL
		     AND CO_AUXI_EMPR Is NULL
		     AND CO_ORDE_SERV = @CSCO_ORDE_SERV)
            Begin
	      -- Inserta aquellos que tienen auxiliares Con Orden Servicio
              Insert Into TASALD_EMPR
              Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,
		    @CSCO_CNTA_EMPR, NULL, NULL, @CSCO_ORDE_SERV, 
		    @VNIM_CARG_CNTB, @VNIM_ABON_CNTB, @VNIM_CARG_ORIG, @VNIM_ABON_ORIG, 
		    @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)
	    End
            Else
            Update TASALD_EMPR
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),
	         IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),
	         IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),
	         IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),
	       CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
            WHERE CO_EMPR = @CSCO_EMPR
            AND CO_UNID_CNTB = @CSCO_UNID_CNTB
            AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
            AND NU_ANNO = @CNNU_ANNO
            AND NU_MESE = @CNNU_MESE
            AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
            AND TI_AUXI_EMPR Is NULL
            AND CO_AUXI_EMPR Is NULL
            AND CO_ORDE_SERV = @CSCO_ORDE_SERV
	  End

      -- INICIO LOOP
      Select @VNNV_INFO_CNTA = NV_INFO_CNTA,
             @VSNV_QUIE_CNTA = NV_QUIE_CNTA  
      From   TMPARA_CONT
      Where  CO_EMPR = @CSCO_EMPR

      Select @VNCA_LONG = DataLength(Rtrim(@VSNV_QUIE_CNTA)) - 1
      Select @VNNU_FINA = 1

      -- Empieza a Trabajar
      While @VNNU_FINA = 1
      Begin
      -- Selecciona 
      -- la cadena es '020305'
      Select @VNCA_INIC = @VNCA_LONG - 2
      Select @VNCA_LONG = @VNCA_LONG - 2
      Select @VNNV_AUXI = Convert(Int, Substring(@VSNV_QUIE_CNTA,@VNCA_INIC,2))

      -- El Nivel Detalle ya existe y si es cero no se hace nada
      If ( @VNNV_AUXI < @VNNV_INFO_CNTA ) And ( @VNNV_AUXI > 0 )
      Begin
      -- Inserta en la Tabla de Saldos
      If NOT EXISTS(SELECT CO_EMPR
                      FROM TASALD_EMPR
                     WHERE CO_EMPR = @CSCO_EMPR
                     AND CO_UNID_CNTB = @CSCO_UNID_CNTB
		     AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
		     AND NU_ANNO = @CNNU_ANNO
		     AND NU_MESE = @CNNU_MESE
                     AND CO_CNTA_EMPR = Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI)
		     And TI_AUXI_EMPR IS NULL
		     And CO_AUXI_EMPR IS NULL
		     And CO_ORDE_SERV IS NULL )
        Begin 
        Insert Into TASALD_EMPR
	Values( @CSCO_EMPR, @CSCO_UNID_CNTB, @CNNU_CNTB_EMPR, @CNNU_ANNO, @CNNU_MESE,
		Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI), NULL, NULL, NULL, @VNIM_CARG_CNTB, 
		@VNIM_ABON_CNTB, 0, 0, @VSPR_DATO, @CSCO_USUA_CREA, @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)
        End 
      Else
        Update TASALD_EMPR
        Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),
     	     IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),
	     CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
	WHERE CO_EMPR = @CSCO_EMPR
        AND CO_UNID_CNTB = @CSCO_UNID_CNTB
	AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
	AND NU_ANNO = @CNNU_ANNO
	AND NU_MESE = @CNNU_MESE
             AND CO_CNTA_EMPR = Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI)
	And TI_AUXI_EMPR IS NULL
	And CO_AUXI_EMPR IS NULL
	And CO_ORDE_SERV IS NULL
        And   Datalength(CO_CNTA_EMPR) = @VNNV_AUXI
      End

      If @VNCA_INIC <= 0
        Select @VNNU_FINA = 0

      End --  While @VNNU_FINA = 1
-- FIN LOOP
      End --  If @CSSI_MVTO_CNTB = 'APR'
    Else If (@CSSI_MVTO_ANTE = 'APR' AND @CSSI_MVTO_CNTB = 'ELI') OR 
           (@CSSI_MVTO_ANTE = 'APR' AND @CSSI_MVTO_CNTB = 'ANU') OR 
	   (@CSSI_MVTO_ANTE = 'APR' AND @CSSI_MVTO_CNTB = 'DSP') OR
	   (@CSSI_MVTO_ANTE = 'APR' AND @CSSI_MVTO_CNTB = 'DIG')
      Begin 
          Update TASALD_EMPR
	  Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB,0), 2),
	       IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB,0), 2),
	       IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG,0), 2),
	       IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG,0), 2),
	       CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
	  WHERE CO_EMPR = @CSCO_EMPR
          AND CO_UNID_CNTB = @CSCO_UNID_CNTB
	  AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
	  AND NU_ANNO = @CNNU_ANNO
 	  AND NU_MESE = @CNNU_MESE
          AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
	  AND TI_AUXI_EMPR IS NULL
	  AND CO_AUXI_EMPR IS NULL
	  AND CO_ORDE_SERV IS NULL

        -- Caso Cuenta - SI Auxiliar - SI Orden Servicio  
	If @CSTI_AUXI_EMPR IS NOT NULL AND @CSCO_AUXI_EMPR IS NOT NULL AND @CSCO_ORDE_SERV IS NOT NULL
            Update TASALD_EMPR
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB,0), 2),
	         IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB,0), 2),
	         IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG,0), 2),
	         IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG,0), 2),
	         CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
            WHERE CO_EMPR = @CSCO_EMPR
            AND CO_UNID_CNTB = @CSCO_UNID_CNTB
            AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
            AND NU_ANNO = @CNNU_ANNO
            AND NU_MESE = @CNNU_MESE
            AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
            AND TI_AUXI_EMPR = @CSTI_AUXI_EMPR
            AND CO_AUXI_EMPR = @CSCO_AUXI_EMPR
	    AND CO_ORDE_SERV = @CSCO_ORDE_SERV

        -- Caso Cuenta - SI Auxiliar - NO Orden Servicio  
	If @CSTI_AUXI_EMPR IS NOT NULL AND @CSCO_AUXI_EMPR IS NOT NULL and @CSCO_ORDE_SERV IS NULL
            Update TASALD_EMPR
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB,0), 2),
	         IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB,0), 2),
	         IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG,0), 2),
	         IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG,0), 2),
	         CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
            WHERE CO_EMPR = @CSCO_EMPR
            AND CO_UNID_CNTB = @CSCO_UNID_CNTB
            AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
            AND NU_ANNO = @CNNU_ANNO
            AND NU_MESE = @CNNU_MESE
            AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
            AND TI_AUXI_EMPR = @CSTI_AUXI_EMPR
            AND CO_AUXI_EMPR = @CSCO_AUXI_EMPR
	    AND CO_ORDE_SERV IS NULL --- =  NULL

        -- Caso Cuenta - NO Auxiliar - SIN Orden Servicio  
	If @CSTI_AUXI_EMPR IS NULL AND @CSCO_AUXI_EMPR IS NULL AND @CSCO_ORDE_SERV IS NOT NULL
            Update TASALD_EMPR
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB,0), 2),
	         IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB,0), 2),
	         IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG,0), 2),
	         IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG,0), 2),
	     CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
            WHERE CO_EMPR = @CSCO_EMPR
            AND CO_UNID_CNTB = @CSCO_UNID_CNTB
            AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
            AND NU_ANNO = @CNNU_ANNO
            AND NU_MESE = @CNNU_MESE
            AND CO_CNTA_EMPR = @CSCO_CNTA_EMPR
            AND TI_AUXI_EMPR Is NULL
            AND CO_AUXI_EMPR Is NULL
            AND CO_ORDE_SERV = @CSCO_ORDE_SERV

      -- INICIO LOOP
      Select @VNNV_INFO_CNTA = NV_INFO_CNTA,
             @VSNV_QUIE_CNTA = NV_QUIE_CNTA  
      From   TMPARA_CONT
      Where  CO_EMPR = @CSCO_EMPR

      Select @VNCA_LONG = DataLength(Rtrim(@VSNV_QUIE_CNTA)) - 1
      Select @VNNU_FINA = 1

      -- Empieza a Trabajar
      While @VNNU_FINA = 1
      Begin
      -- Selecciona 
      -- la cadena es '020305'
      Select @VNCA_INIC = @VNCA_LONG - 2
      Select @VNCA_LONG = @VNCA_LONG - 2
      Select @VNNV_AUXI = Convert(Int, Substring(@VSNV_QUIE_CNTA,@VNCA_INIC,2))

      -- El Nivel Detalle ya existe y si es cero no se hace nada
      If ( @VNNV_AUXI < @VNNV_INFO_CNTA ) And ( @VNNV_AUXI > 0 )
      -- Inserta en la Tabla de Saldos
        Update TASALD_EMPR
        Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB,0), 2),
     	     IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB,0), 2),
	     CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
	WHERE CO_EMPR = @CSCO_EMPR
        AND CO_UNID_CNTB = @CSCO_UNID_CNTB
	AND NU_CNTB_EMPR = @CNNU_CNTB_EMPR
	AND NU_ANNO = @CNNU_ANNO
	AND NU_MESE = @CNNU_MESE
             AND CO_CNTA_EMPR = Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI)
	And TI_AUXI_EMPR IS NULL
	And CO_AUXI_EMPR IS NULL
	And CO_ORDE_SERV IS NULL
             And   Datalength(CO_CNTA_EMPR) = @VNNV_AUXI

      If @VNCA_INIC <= 0         Select @VNNU_FINA = 0

      End --  While @VNNU_FINA = 1
-- FIN LOOP
      End --  If @CSSI_MVTO_CNTB = 'ELI'
-- Fin

  Fetch CT_TXMVTO_CNTB_U02_1 Into
	  @CSCO_EMPR,		@CNNU_CNTB_EMPR,	@CSCO_UNID_CNTB,
	  @CSCO_OPRC_CNTB,	@CNNU_ANNO,		@CNNU_MESE,
	  @CSNU_ASTO,		@CNNU_SECU,		@CDFE_ASTO_CNTB,
	  @CSCO_CNTA_EMPR,	@CSTI_AUXI_EMPR,	@CSCO_AUXI_EMPR,
	  @CSCO_MONE,		@CSTI_OPER,		@CNIM_MVTO_ORIG,
	  @CNIM_MVTO_CNTB,	@CSSI_MVTO_CNTB,	@CSCO_ORDE_SERV,
          @CSCO_USUA_CREA,@CSCO_USUA_MODI,@CDFE_USUA_CREA,@CDFE_USUA_MODI    
  End
  Close CT_TXMVTO_CNTB_U02_1
  Deallocate CT_TXMVTO_CNTB_U02_1
End
Return
/*------------------------ Fin ----------------------*/
GO

CREATE Trigger [dbo].[TU_TXMVTO_CNTB_U03] On [dbo].[TXMVTO_CNTB]  
For Update  
/*----------------------------------------------------------*/  
/*---- Empresa              : OFISIS S.A.		----*/  
/*---- Cliente              : OFISIS S.A. 		----*/  
/*---- Sistema              : OFICONT			----*/  
/*---- M>dulo               : EMPRESA			----*/  
/*---- Programa             : Mayorizacion en Linea	----*/  
/*---- Script               : TU_TXMVTO_CNTB_U03	----*/  
/*---- Nombre TR            : TU_TXMVTO_CNTB_U03	----*/  
/*---- Desarrollado por     : LGP			----*/  
/*---- Fecha Creaci>n       : 12/02/2003		----*/  
/*---- Base de Datos        : SQL			----*/  
/*---- Versi>n              : 8.0			----*/  
/*---- Invoca a SP          :				----*/  
/*----------------------------------------------------------*/  
/*---- Modificado 1 por     : Percy Garcia		----*/  
/*---- Fecha Modificaci>n   : 08/03/2004		----*/  
/*---- Detalle Modificaci>n : se comento en el cursor	----*/
/*---- para que se ejecute para cualquier asto (antes	----*/
/*---- ovbiaba asto apertura)				----*/  
/*----------------------------------------------------------*/  
/*---- Modificado 2 por     : YMT			----*/  
/*---- Fecha Modificaci>n   : 18/06/2004		----*/  
/*---- Detalle Modificaci>n : Default del Usuario	----*/
/*----------------------------------------------------------*/  
/*---------------------------------------------------------------------*/  
/*----- Modificado 5 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 30/06/2006                             -----*/  
/*----- Detalle Modifica : se aumento el tamaño de la @VSNV_QUIE_CNTA de 10 a 40-----*/  
/*---------------------------------------------------------------------*/  
/*---- Comentarios:					----*/  
/*---- Drop Trigger TU_TXMVTO_CNTB_U03   COMMIT		----*/  
/*----------------------------------------------------------*/  
/*---- Se ejecuta con el INSERT de la Tabla		----*/  
/*----------------------------------------------------------*/  
As  
If Update(CO_CNTA_EMPR) Or Update(TI_AUXI_EMPR) Or Update(CO_AUXI_EMPR) Or   
   Update(CO_ORDE_SERV) Or Update(TI_OPER) Or Update(IM_MVTO_ORIG) Or   
   Update(IM_MVTO_CNTB)   
Begin  
Declare   
  @CSCO_EMPR       TD_VC_002,  
  @CNNU_CNTB_EMPR   TD_IN_001,  
  @CSCO_UNID_CNTB   TD_VC_003,  
  @CSCO_OPRC_CNTB      TD_VC_003,  
  @CNNU_ANNO            TD_IN_001,  
  @CNNU_MESE            TD_IN_001,  
  @CSNU_ASTO            TD_VC_010,  
  @CNNU_SECU  TD_IN_002,  
  @CDFE_ASTO_CNTB   TD_DT_001,  
  @CSCO_CNTA_EMPR TD_VC_020,  
  @CSTI_AUXI_EMPR       TD_VC_001,  
  @CSCO_AUXI_EMPR       TD_VC_020,  
  @CSCO_MONE   TD_VC_003,  
  @CSTI_OPER  TD_VC_003,  
  @CNIM_MVTO_ORIG TD_NU_016_004,  
  @CNIM_MVTO_CNTB TD_NU_016_004,  
  @VNIM_CARG_ORIG TD_NU_016_004,  
  @VNIM_ABON_ORIG TD_NU_016_004,  
  @VNIM_CARG_CNTB TD_NU_016_004,  
  @VNIM_ABON_CNTB TD_NU_016_004,  
  @CSSI_MVTO_CNTB       TD_VC_003,  
  @CSCO_ORDE_SERV TD_VC_020,  
  @VSPR_DATO  TD_VC_020,  
-- DATOS ANTERIORES  
  @CSCO_EMPR_ANTE       TD_VC_002,  
  @CNNU_CNTB_ANTE   TD_IN_001,  
  @CSCO_UNID_ANTE   TD_VC_003,  
  @CSCO_OPRC_ANTE      TD_VC_003,  
  @CNNU_ANNO_ANTE       TD_IN_001,  
  @CNNU_MESE_ANTE       TD_IN_001,  
  @CSNU_ASTO_ANTE       TD_VC_010,  
  @CNNU_SECU_ANTE TD_IN_002,  
  @CDFE_ASTO_ANTE   TD_DT_001,  
  @CSCO_CNTA_ANTE TD_VC_020,  
  @CSTI_AUXI_ANTE       TD_VC_001,  
  @CSCO_AUXI_ANTE       TD_VC_020,  
  @CSCO_MONE_ANTE TD_VC_003,  
  @CSTI_OPER_ANTE TD_VC_003,  
  @CNIM_MVTO_ORIG_ANTE TD_NU_016_004,  
  @CNIM_MVTO_CNTB_ANTE TD_NU_016_004,  
  @VNIM_CARG_ORIG_ANTE TD_NU_016_004,  
  @VNIM_ABON_ORIG_ANTE TD_NU_016_004,  
  @VNIM_CARG_CNTB_ANTE TD_NU_016_004,  
  @VNIM_ABON_CNTB_ANTE TD_NU_016_004,  
  @CSSI_MVTO_ANTE       TD_VC_003,  
  @CSCO_OSER_ANTE TD_VC_020,  
-- Variables Loop --  
  @VNNV_INFO_CNTA       TD_IN_001,  
  @VSNV_QUIE_CNTA       TD_VC_040,  
  @VNCA_INIC            TD_IN_001,  
  @VNCA_LONG            TD_IN_001,  
  @VNCA_LONG_AUXI       TD_IN_001,  
  @VNNV_AUXI            TD_IN_001,  
  @VNNU_FINA            TD_IN_001,  
----------- Variables Actualiza datos Reales ----------------------------------------  
  @CNNU_SECU_MVTO TD_IN_002,  
  @VNIM_MVTO_ORIG TD_NU_016_004,  
  @VNIM_MVTO_CNTB TD_NU_016_004,  
  @VSDE_CADE_IMPR TD_VC_020,  
  @VSCO_MONE_CNTB TD_VC_003,  
  @CNNU_REGI_EMPR TD_IN_001,  
  @CSCO_PART  TD_VC_020,  
  @CNPO_APLI  TD_NU_015_006,  
  @CSCO_DOMI  TD_VC_003,  
  @CNTI_SIGN_CONT TD_IN_001,  
  @CNTI_OPER_ARIT TD_IN_001,  
  @CSCO_MONE_PART TD_VC_003,  
  @CSTI_CAMB_PART TD_VC_003,   
  @VNIM_MVTO  TD_NU_016_004,  
 @VNIM_MVTO_ACUM TD_NU_016_004,  
  @VNPO_APLI_DOMI TD_NU_015_006,  
  @CSTI_CAMB  TD_VC_003,  
  @CNFA_CAMB  TD_NU_015_006,  
  @CSTI_CAMB_ANTE TD_VC_003,  
  @CNFA_CAMB_ANTE TD_NU_015_006,  
  @VNIM_MVTO_ORIG_ANTE TD_NU_016_004,  
  @VNIM_MVTO_CNTB_ANTE TD_NU_016_004,  
  @VSST_PRES  TD_VC_001,  
  @CSTI_DOCU            TD_VC_003,  
  @CSNU_DOCU            TD_VC_020,  
  @CDFE_DOCU            TD_DT_001,  
  @VNNU_SECU            TD_IN_002,

@CSCO_USUA_CREA         TD_VC_008,
@CSCO_USUA_MODI         TD_VC_008,
@CDFE_USUA_CREA         TD_DT_001_SIST,
@CDFE_USUA_MODI         TD_DT_001_SIST  
 
--Solo se Ejecuta si el numero de Proceso es Nulo o Cero
/* If Exists( Select NU_PROC From inserted
           Where  NU_PROC = Null Or NU_PROC = 0 )
Begin */
----------- Mayorizaci>n en L-nea ---------------------------------------------------  
  Select @VNIM_CARG_ORIG = 0.00
  Select @VNIM_CARG_CNTB = 0.00
  Select @VNIM_ABON_ORIG = 0.00
  Select @VNIM_ABON_CNTB = 0.00

  Declare CT_TXMVTO_CNTB_U03_1 Cursor  
  For  
  Select  CO_EMPR, NU_CNTB_EMPR,  CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,  
   NU_MESE, NU_ASTO,    NU_SECU,  FE_ASTO_CNTB,  CO_CNTA_EMPR,  
   TI_AUXI_EMPR, CO_AUXI_EMPR,    CO_MONE, TI_OPER, Round(IM_MVTO_ORIG, 2),
   Round(IM_MVTO_CNTB, 2), SI_MVTO_CNTB, LTRIM(RTRIM(CO_ORDE_SERV)),
  CO_USUA_CREA,CO_USUA_MODI,FE_USUA_CREA,FE_USUA_MODI  
  From inserted  
/*  Where CO_OPRC_CNTB NOT IN (SELECT T3.CO_OPRC_CNTB FROM TTIDEN_OPER T3  
    Where CO_EMPR = T3.CO_EMPR   
    And NU_CNTB_EMPR = T3.NU_CNTB_EMPR  
    And T3.ID_OPRC = '013')  */
  
  Open  CT_TXMVTO_CNTB_U03_1  
  Fetch CT_TXMVTO_CNTB_U03_1 Into  
   @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB,  
   @CSCO_OPRC_CNTB, @CNNU_ANNO,  @CNNU_MESE,  
   @CSNU_ASTO,  @CNNU_SECU,  @CDFE_ASTO_CNTB,  
   @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,  
   @CSCO_MONE,  @CSTI_OPER,  @CNIM_MVTO_ORIG,  
   @CNIM_MVTO_CNTB, @CSSI_MVTO_CNTB, @CSCO_ORDE_SERV,
   @CSCO_USUA_CREA,@CSCO_USUA_MODI,@CDFE_USUA_CREA,@CDFE_USUA_MODI   
  
  While @@Fetch_Status = 0  
  Begin  
    If  @@Fetch_Status < 0  
      Begin  
        Close CT_TXMVTO_CNTB_U03_1  
        Deallocate CT_TXMVTO_CNTB_U03_1  
      End  
  
    If @CSTI_AUXI_EMPR = ''  
       Select @CSTI_AUXI_EMPR = NULL  
    If @CSCO_AUXI_EMPR = ''  
       Select @CSCO_AUXI_EMPR = NULL  
    If @CSCO_ORDE_SERV = ''   
       Select @CSCO_ORDE_SERV = NULL  
  
-- Inicio  
    If @CSTI_OPER = 'CAR'  
      Begin  
        Select @VNIM_CARG_ORIG = @CNIM_MVTO_ORIG  
        Select @VNIM_CARG_CNTB = @CNIM_MVTO_CNTB  
        Select @VNIM_ABON_ORIG = 0  
        Select @VNIM_ABON_CNTB = 0  
      End  
    Else If @CSTI_OPER = 'ABO'  
      Begin  
        Select @VNIM_CARG_ORIG = 0  
        Select @VNIM_CARG_CNTB = 0  
        Select @VNIM_ABON_ORIG = @CNIM_MVTO_ORIG  
        Select @VNIM_ABON_CNTB = @CNIM_MVTO_CNTB  
      End  
  
    Select @VSPR_DATO = replicate('0',@CNNU_MESE) + '1' + replicate('0',20-(@CNNU_MESE+1))  
  
    -- Obtiene Datos anteriores --  
    Select  @CSCO_EMPR_ANTE = CO_EMPR,     @CNNU_CNTB_ANTE = NU_CNTB_EMPR,     
          @CSCO_UNID_ANTE = CO_UNID_CNTB, @CSCO_OPRC_ANTE = CO_OPRC_CNTB,    
          @CNNU_ANNO_ANTE = NU_ANNO,   @CNNU_MESE_ANTE = NU_MESE,  
          @CSNU_ASTO_ANTE = NU_ASTO,    @CNNU_SECU_ANTE = NU_SECU,  
          @CDFE_ASTO_ANTE = FE_ASTO_CNTB, @CSCO_CNTA_ANTE = CO_CNTA_EMPR,  
          @CSTI_AUXI_ANTE = TI_AUXI_EMPR, @CSCO_AUXI_ANTE = CO_AUXI_EMPR,  
          @CSCO_MONE_ANTE = CO_MONE,   @CSTI_OPER_ANTE = TI_OPER,  
          @CNIM_MVTO_ORIG_ANTE = Round(IM_MVTO_ORIG, 2),@CNIM_MVTO_CNTB_ANTE = Round(IM_MVTO_CNTB, 2),   
          @CSSI_MVTO_ANTE = SI_MVTO_CNTB, @CSCO_OSER_ANTE = LTRIM(RTRIM(CO_ORDE_SERV))
     From   Deleted  
     Where  CO_EMPR = @CSCO_EMPR  
     And    NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
     And    CO_UNID_CNTB = @CSCO_UNID_CNTB  
     And    CO_OPRC_CNTB = @CSCO_OPRC_CNTB  
     And    NU_ANNO = @CNNU_ANNO  
     And    NU_MESE = @CNNU_MESE  
     And    NU_ASTO = @CSNU_ASTO  
     And    NU_SECU = @CNNU_SECU  
  
     If @CSTI_OPER_ANTE = 'CAR'  
       Begin  
         Select @VNIM_CARG_ORIG_ANTE = @CNIM_MVTO_ORIG_ANTE  
         Select @VNIM_CARG_CNTB_ANTE = @CNIM_MVTO_CNTB_ANTE  
         Select @VNIM_ABON_ORIG_ANTE = 0  
         Select @VNIM_ABON_CNTB_ANTE = 0  
       End  
     Else If @CSTI_OPER_ANTE = 'ABO'  
       Begin  
         Select @VNIM_CARG_ORIG_ANTE = 0  
         Select @VNIM_CARG_CNTB_ANTE = 0  
         Select @VNIM_ABON_ORIG_ANTE = @CNIM_MVTO_ORIG_ANTE  
         Select @VNIM_ABON_CNTB_ANTE = @CNIM_MVTO_CNTB_ANTE  
       End  
  
    If @CSSI_MVTO_CNTB = 'APR'  
      Begin  
        Update TASALD_EMPR  
        Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB_ANTE,0), 2),  
             IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB_ANTE,0), 2),  
             IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG_ANTE,0), 2),  
             IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG_ANTE,0), 2),  
             CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
       Where CO_EMPR = @CSCO_EMPR_ANTE  
          And CO_UNID_CNTB = @CSCO_UNID_ANTE  
          And NU_CNTB_EMPR = @CNNU_CNTB_ANTE  
          And NU_ANNO = @CNNU_ANNO_ANTE  
          And NU_MESE = @CNNU_MESE_ANTE  
          And CO_CNTA_EMPR = @CSCO_CNTA_ANTE  
          And TI_AUXI_EMPR IS NULL  
          And CO_AUXI_EMPR IS NULL  
          And CO_ORDE_SERV IS NULL  
  
       Update TASALD_EMPR  
       Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),  
            IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),  
            IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),  
            IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),  
            CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI  
      Where CO_EMPR = @CSCO_EMPR  
          And CO_UNID_CNTB = @CSCO_UNID_CNTB  
          And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
          And NU_ANNO = @CNNU_ANNO  
          And NU_MESE = @CNNU_MESE  
          And CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
          And TI_AUXI_EMPR IS NULL  
          And CO_AUXI_EMPR IS NULL  
          And CO_ORDE_SERV IS NULL  
  
 -- Caso Cuenta - SI Auxiliar - SI Orden Servicio    
 If @CSTI_AUXI_EMPR IS NOT NULL And @CSCO_AUXI_EMPR IS NOT NULL AND @CSCO_ORDE_SERV IS NOT NULL  
   Begin   
     Update TASALD_EMPR  
     Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB_ANTE,0), 2),  
          IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB_ANTE,0), 2),  
          IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG_ANTE,0), 2),  
          IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG_ANTE,0), 2),  
          CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI  
     Where CO_EMPR = @CSCO_EMPR_ANTE  
           And CO_UNID_CNTB = @CSCO_UNID_ANTE  
           And NU_CNTB_EMPR = @CNNU_CNTB_ANTE  
     And NU_ANNO = @CNNU_ANNO_ANTE  
      And NU_MESE = @CNNU_MESE_ANTE  
            And CO_CNTA_EMPR = @CSCO_CNTA_ANTE  
     And TI_AUXI_EMPR = @CSTI_AUXI_ANTE  
     And CO_AUXI_EMPR = @CSCO_AUXI_ANTE  
     And CO_ORDE_SERV = @CSCO_OSER_ANTE  
  
            Update TASALD_EMPR  
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),  
          IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),  
          IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),  
          IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),  
          CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI  
            Where CO_EMPR = @CSCO_EMPR  
            And CO_UNID_CNTB = @CSCO_UNID_CNTB  
            And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
            And NU_ANNO = @CNNU_ANNO  
            And NU_MESE = @CNNU_MESE  
            And CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
            And TI_AUXI_EMPR = @CSTI_AUXI_EMPR  
            And CO_AUXI_EMPR = @CSCO_AUXI_EMPR  
     	    And CO_ORDE_SERV = @CSCO_ORDE_SERV  
   End  

 -- Caso Cuenta - SI Auxiliar - NO Orden Servicio    
 If @CSTI_AUXI_EMPR IS NOT NULL And @CSCO_AUXI_EMPR IS NOT NULL AND @CSCO_ORDE_SERV IS NULL
   Begin   
     Update TASALD_EMPR  
     Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB_ANTE,0), 2),  
          IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB_ANTE,0), 2),  
          IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG_ANTE,0), 2),  
          IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG_ANTE,0), 2),  
          CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI
     Where CO_EMPR = @CSCO_EMPR_ANTE  
           And CO_UNID_CNTB = @CSCO_UNID_ANTE  
           And NU_CNTB_EMPR = @CNNU_CNTB_ANTE  
     And NU_ANNO = @CNNU_ANNO_ANTE  
      And NU_MESE = @CNNU_MESE_ANTE  
            And CO_CNTA_EMPR = @CSCO_CNTA_ANTE  
     And TI_AUXI_EMPR = @CSTI_AUXI_ANTE  
     And CO_AUXI_EMPR = @CSCO_AUXI_ANTE  
     And CO_ORDE_SERV IS NULL
  
            Update TASALD_EMPR  
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),  
          IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),  
          IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),  
          IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),  
          CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI  
            Where CO_EMPR = @CSCO_EMPR  
            And CO_UNID_CNTB = @CSCO_UNID_CNTB  
            And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
            And NU_ANNO = @CNNU_ANNO  
            And NU_MESE = @CNNU_MESE  
            And CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
            And TI_AUXI_EMPR = @CSTI_AUXI_EMPR  
            And CO_AUXI_EMPR = @CSCO_AUXI_EMPR  
     	    And CO_ORDE_SERV IS NULL  
   End  

  
        -- Caso Cuenta - NO Auxiliar - CON Orden Servicio    
 If @CSTI_AUXI_EMPR IS NULL And @CSCO_AUXI_EMPR IS NULL And @CSCO_ORDE_SERV IS NOT NULL  
   Begin   
            Update TASALD_EMPR  
     Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB_ANTE,0), 2),  
          IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB_ANTE,0), 2),  
          IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) - Isnull(@VNIM_CARG_ORIG_ANTE,0), 2),  
          IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) - Isnull(@VNIM_ABON_ORIG_ANTE,0), 2),  
          CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI  
     Where CO_EMPR = @CSCO_EMPR_ANTE  
            And CO_UNID_CNTB = @CSCO_UNID_ANTE  
     And NU_CNTB_EMPR = @CNNU_CNTB_ANTE  
     And NU_ANNO = @CNNU_ANNO_ANTE  
      And NU_MESE = @CNNU_MESE_ANTE  
            And CO_CNTA_EMPR = @CSCO_CNTA_ANTE  
     And TI_AUXI_EMPR Is NULL  
     And CO_AUXI_EMPR Is NULL  
     And CO_ORDE_SERV = @CSCO_OSER_ANTE  
  
            Update TASALD_EMPR  
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),  
          IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),  
          IM_CARG_ORIG = Round(Isnull(IM_CARG_ORIG,0) + Isnull(@VNIM_CARG_ORIG,0), 2),  
          IM_ABON_ORIG = Round(Isnull(IM_ABON_ORIG,0) + Isnull(@VNIM_ABON_ORIG,0), 2),  
          CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI 
            Where CO_EMPR = @CSCO_EMPR  
            And CO_UNID_CNTB = @CSCO_UNID_CNTB  
            And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
            And NU_ANNO = @CNNU_ANNO  
            And NU_MESE = @CNNU_MESE  
            And CO_CNTA_EMPR = @CSCO_CNTA_EMPR  
            And TI_AUXI_EMPR Is NULL  
            And CO_AUXI_EMPR Is NULL  
            And CO_ORDE_SERV = @CSCO_ORDE_SERV  
   End  
  
      -- INICIO LOOP  
      Select @VNNV_INFO_CNTA = NV_INFO_CNTA,  
             @VSNV_QUIE_CNTA = NV_QUIE_CNTA    
      From   TMPARA_CONT  
      Where  CO_EMPR = @CSCO_EMPR  
  
      Select @VNCA_LONG = DataLength(Rtrim(@VSNV_QUIE_CNTA)) - 1  
      Select @VNNU_FINA = 1  
  
      -- Empieza a Trabajar  
      While @VNNU_FINA = 1  
      Begin  
        -- Selecciona   
        -- la cadena es '020305'  
        Select @VNCA_INIC = @VNCA_LONG - 2  
        Select @VNCA_LONG = @VNCA_LONG - 2  
        Select @VNNV_AUXI = Convert(Int, Substring(@VSNV_QUIE_CNTA,@VNCA_INIC,2))  
  
        -- Select @VNCA_INIC,@VNCA_LONG, @VNNV_AUXI  
        -- El Nivel Detalle ya existe y si es cero no se hace nada  
        If ( @VNNV_AUXI < @VNNV_INFO_CNTA ) And ( @VNNV_AUXI > 0 )  
        Begin  
          -- Inserta en la Tabla de Saldos  
   Begin   
            Update TASALD_EMPR  
     Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) - Isnull(@VNIM_CARG_CNTB_ANTE,0), 2),  
          IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) - Isnull(@VNIM_ABON_CNTB_ANTE,0), 2),  
          CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI  
     Where CO_EMPR = @CSCO_EMPR_ANTE  
            And CO_UNID_CNTB = @CSCO_UNID_ANTE  
     And NU_CNTB_EMPR = @CNNU_CNTB_ANTE  
     And NU_ANNO = @CNNU_ANNO_ANTE  
     And NU_MESE = @CNNU_MESE_ANTE  
     And CO_CNTA_EMPR = Substring(@CSCO_CNTA_ANTE,1,@VNNV_AUXI)  
     And TI_AUXI_EMPR IS NULL  
     And CO_AUXI_EMPR IS NULL  
     And CO_ORDE_SERV IS NULL  
     And Datalength(CO_CNTA_EMPR) = @VNNV_AUXI  
  
            Update TASALD_EMPR  
            Set  IM_CARG_CNTB = Round(Isnull(IM_CARG_CNTB,0) + Isnull(@VNIM_CARG_CNTB,0), 2),  
                 IM_ABON_CNTB = Round(Isnull(IM_ABON_CNTB,0) + Isnull(@VNIM_ABON_CNTB,0), 2),  
          CO_USUA_MODI = @CSCO_USUA_MODI, FE_USUA_MODI = @CDFE_USUA_MODI  
     Where CO_EMPR = @CSCO_EMPR  
            And CO_UNID_CNTB = @CSCO_UNID_CNTB  
     And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
     And NU_ANNO = @CNNU_ANNO  
     And NU_MESE = @CNNU_MESE  
     And CO_CNTA_EMPR = Substring(@CSCO_CNTA_EMPR,1,@VNNV_AUXI)  
     And TI_AUXI_EMPR IS NULL  
     And CO_AUXI_EMPR IS NULL  
     And CO_ORDE_SERV IS NULL  
     And Datalength(CO_CNTA_EMPR) = @VNNV_AUXI  
   End  
        End  
        If @VNCA_INIC <= 0  
          Select @VNNU_FINA = 0  
      End --  While @VNNU_FINA = 1  
-- FIN LOOP  
      End --  If @CSSI_MVTO_CNTB = 'APR'  
-- Fin  
  Fetch CT_TXMVTO_CNTB_U03_1 Into  
   @CSCO_EMPR,  @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB,  
   @CSCO_OPRC_CNTB, @CNNU_ANNO,  @CNNU_MESE,  
   @CSNU_ASTO,  @CNNU_SECU,  @CDFE_ASTO_CNTB,  
   @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,  
   @CSCO_MONE,  @CSTI_OPER,  @CNIM_MVTO_ORIG,  
   @CNIM_MVTO_CNTB, @CSSI_MVTO_CNTB, @CSCO_ORDE_SERV,
   @CSCO_USUA_CREA,@CSCO_USUA_MODI,@CDFE_USUA_CREA,@CDFE_USUA_MODI  
  
  End  
  Close CT_TXMVTO_CNTB_U03_1  
  Deallocate CT_TXMVTO_CNTB_U03_1  
End  
Return  
/*------------------------ Fin ----------------------*/
GO

CREATE Trigger [dbo].[TU_TXMVTO_CNTB_U04] On [dbo].[TXMVTO_CNTB]  
For Update  
/*---------------------------------------------------------*/  
/*---- Empresa              : OFISIS S.A.              ----*/  
/*---- Cliente              : OFISIS S.A.              ----*/  
/*---- Sistema              : OFICONT                  ----*/  
/*---- M>dulo               : Empresa        	       ----*/  
/*---- Programa             : Actualiza Datos Reales   ----*/  
/*---- Script               :                          ----*/  
/*---- Nombre TR            : TU_TXMVTO_CNTB_U04       ----*/  
/*---- Desarrollado por     : LGP                      ----*/  
/*---- Fecha Creaci>n       : 25/10/2004               ----*/  
/*---- Base de Datos        : SQL                      ----*/  
/*---- Versi>n              : 8.0                      ----*/  
/*---- Invoca a SP          :                          ----*/  
/*---------------------------------------------------------*/  
/*---------------------------------------------------------*/  
/*---- Se ejecuta con el INSERT de la Tabla            ----*/  
/*---------------------------------------------------------*/  
As  
If Update(SI_MVTO_CNTB) 
Begin  
Declare   
  @CSCO_EMPR      TD_VC_002,  
  @CNNU_CNTB_EMPR TD_IN_001,  
  @CSCO_UNID_CNTB TD_VC_003,  
  @CSCO_OPRC_CNTB TD_VC_003,  
  @CNNU_ANNO      TD_IN_001,  
  @CNNU_MESE      TD_IN_001,  
  @CSNU_ASTO      TD_VC_010,  
  @CNNU_SECU  	  TD_IN_002,  
  @CDFE_ASTO_CNTB TD_DT_001,  
  @CSCO_CNTA_EMPR TD_VC_020,  
  @CSTI_AUXI_EMPR TD_VC_001,  
  @CSCO_AUXI_EMPR TD_VC_020,  
  @CSCO_MONE      TD_VC_003,  
  @CSTI_OPER      TD_VC_003,  
  @CNIM_MVTO_ORIG TD_NU_016_004,  
  @CNIM_MVTO_CNTB TD_NU_016_004,  
  @VNIM_CARG_ORIG TD_NU_016_004,  
  @VNIM_ABON_ORIG TD_NU_016_004,  
  @VNIM_CARG_CNTB TD_NU_016_004,  
  @VNIM_ABON_CNTB TD_NU_016_004,  
  @CSSI_MVTO_CNTB TD_VC_003,  
  @CSCO_ORDE_SERV TD_VC_020,  
  @VSPR_DATO  	  TD_VC_020,  
  @CSSI_MVTO_ANTE TD_VC_003,  
-- Variables Loop --  
  @VNNV_INFO_CNTA TD_IN_001,  
  @VSNV_QUIE_CNTA TD_VC_010,  
  @VNCA_INIC      TD_IN_001,  
  @VNCA_LONG      TD_IN_001,  
  @VNCA_LONG_AUXI TD_IN_001,  
  @VNNV_AUXI      TD_IN_001,  
  @VNNU_FINA      TD_IN_001,  
------------------- Variables Actualiza Datos Reales ----------------------------  
  @CNNU_SECU_MVTO TD_IN_002,  
  @VNIM_MVTO_ORIG TD_NU_016_004,  
  @VNIM_MVTO_CNTB TD_NU_016_004,  
  @VSDE_CADE_IMPR TD_VC_020,  
  @VSCO_MONE_CNTB TD_VC_003,  
  @CNNU_REGI_EMPR TD_IN_001,  
  @CSCO_PART      TD_VC_020,  
  @CNPO_APLI      TD_NU_015_006,  
  @CSCO_DOMI      TD_VC_003,  
  @CNTI_SIGN_CONT TD_IN_001,  
  @CNTI_OPER_ARIT TD_IN_001,  
  @CSCO_MONE_PART TD_VC_003,  
  @CSTI_CAMB_PART TD_VC_003,   
  @VNIM_MVTO      TD_NU_016_004,  
  @VNIM_MVTO_ACUM TD_NU_016_004,  
  @VNIM_MVTO_TOTA TD_NU_016_004,  
  @VNPO_APLI_DOMI TD_NU_015_006,  
  @CSTI_CAMB      TD_VC_003,  
  @CNFA_CAMB      TD_NU_015_006,  
  @VSST_PRES      TD_VC_001,  
  @CSTI_DOCU      TD_VC_003,  
  @CSNU_DOCU      TD_VC_020,  
  @CDFE_DOCU      TD_DT_001,  
  @VNNU_SECU      TD_IN_002,
  @VNIM_ORIG_ANTE TD_NU_016_004,
  @VNIM_CNTB_ANTE TD_NU_016_004,
  @VNFA_CMPR_OFIC TD_NU_015_006,
  @VNFA_VNTA_OFIC TD_NU_015_006,

@CSCO_USUA_CREA         TD_VC_008,
@CSCO_USUA_MODI         TD_VC_008,
@CDFE_USUA_CREA         TD_DT_001_SIST,
@CDFE_USUA_MODI         TD_DT_001_SIST  
  
--Solo se Ejecuta si el numero de Proceso es Nulo o Cero  
If Exists( Select NU_PROC From inserted  
           Where  NU_PROC Is Null)  
Begin  
------------------- Actualiza Datos Reales ---------------------------------------  
--/*****************  
  Declare CT_TXMVTO_CNTB_U02_2 Cursor  
  For  
  Select  T1.CO_EMPR, T1.NU_CNTB_EMPR, T1.CO_UNID_CNTB, T1.NU_ANNO, T1.NU_MESE, T1.NU_SECU,  
          T1.CO_CNTA_EMPR, T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR, T1.CO_MONE,  T1.TI_OPER,  
	  Round(T1.IM_MVTO_ORIG, 2), Round(T1.IM_MVTO_CNTB, 2), LTRIM(RTRIM(T1.CO_ORDE_SERV)), 
	  T1.SI_MVTO_CNTB, T1.FE_ASTO_CNTB, T1.TI_CAMB, T1.FA_CAMB, T1.NU_ASTO, T1.CO_OPRC_CNTB, 
	  T1.TI_DOCU, T1.NU_DOCU, T1.FE_DOCU,
          t1.CO_USUA_CREA,t1.CO_USUA_MODI,t1.FE_USUA_CREA,t1.FE_USUA_MODI    
  From inserted T1 
  Where T1.CO_CNTA_EMPR in (select Isnull(max(T2.CO_CNTA_EMPR), '') from OFIPRES..TDPART_CONT T2
	where T2.CO_EMPR = T1.CO_EMPR
	and T2.NU_ANNO = T1.NU_ANNO
	and T2.NU_MESE = T1.NU_MESE
	and T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR)
     
  Open  CT_TXMVTO_CNTB_U02_2  
  Fetch CT_TXMVTO_CNTB_U02_2 Into  
   @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CNNU_ANNO, @CNNU_MESE, @CNNU_SECU_MVTO,  
   @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_MONE, @CSTI_OPER, @CNIM_MVTO_ORIG,  
   @CNIM_MVTO_CNTB, @CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, @CDFE_ASTO_CNTB, @CSTI_CAMB, @CNFA_CAMB,  
   @CSNU_ASTO, @CSCO_OPRC_CNTB, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,
   @CSCO_USUA_CREA,@CSCO_USUA_MODI,@CDFE_USUA_CREA,@CDFE_USUA_MODI   
  While @@Fetch_Status = 0  
  Begin  
   Select @VSST_PRES = ST_PRES  
     From TMEMPR  
    Where CO_EMPR = @CSCO_EMPR  

   If @@Fetch_Status < 0 Or @VSST_PRES = 'N'  
    Begin  
        Close CT_TXMVTO_CNTB_U02_2  
        Deallocate CT_TXMVTO_CNTB_U02_2  
        Return  
    End  
  
   If @VSST_PRES = 'S' -- Si Sistema Presupuesto  
   Begin  
    If @CNIM_MVTO_CNTB IS Null 
       Select @CNIM_MVTO_CNTB = 0  

    If @CSTI_OPER = 'CAR'  
      Begin  
        Select @VNIM_MVTO_ORIG = @CNIM_MVTO_ORIG  
        Select @VNIM_MVTO_CNTB = @CNIM_MVTO_CNTB  
      End  
    Else If @CSTI_OPER = 'ABO'  
      Begin  
        Select @VNIM_MVTO_ORIG = (-1)* @CNIM_MVTO_ORIG  
        Select @VNIM_MVTO_CNTB = (-1)* @CNIM_MVTO_CNTB  
      End  

    Select @VSCO_MONE_CNTB = CO_MONE  
      From TTCNTB_EMPR  
     Where CO_EMPR = @CSCO_EMPR  
       And NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
  
    Select  @CSSI_MVTO_ANTE = SI_MVTO_CNTB
     From   Deleted  
     Where  CO_EMPR = @CSCO_EMPR  
     And    NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
     And    CO_UNID_CNTB = @CSCO_UNID_CNTB  
     And    CO_OPRC_CNTB = @CSCO_OPRC_CNTB  
     And    NU_ANNO = @CNNU_ANNO  
     And    NU_MESE = @CNNU_MESE  
     And    NU_ASTO = @CSNU_ASTO  
     And    NU_SECU = @CNNU_SECU_MVTO   

    --- Cursor 2   
    Declare CT_TXMVTO_CNTB_U02_3 Cursor  
    For      
     Select T1.NU_REGI_EMPR, T1.CO_PART, T1.NU_SECU, T1.PO_APLI, T1.CO_DOMI,  
     T1.TI_SIGN_CONT, T1.TI_OPER_ARIT, T2.CO_MONE, T2.TI_CAMB  
     From OFIPRES..TDPART_CONT T1, OFIPRES..TMPART T2  
     Where T1.CO_EMPR = @CSCO_EMPR  
     And T1.NU_ANNO = @CNNU_ANNO  
     And T1.NU_MESE = @CNNU_MESE  
     And T1.NU_CNTB_EMPR = @CNNU_CNTB_EMPR  
     And (Isnull(T1.CO_UNID_CNTB,'%') Like Isnull(Rtrim(Ltrim(@CSCO_UNID_CNTB)), '%') Or T1.CO_UNID_CNTB Is null)  
     And (Isnull(T1.CO_CNTA_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSCO_CNTA_EMPR)), '%') Or T1.CO_CNTA_EMPR Is null)  
     And (Isnull(T1.TI_AUXI_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSTI_AUXI_EMPR)), '%') Or T1.TI_AUXI_EMPR Is null)  
     And (Isnull(T1.CO_AUXI_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSCO_AUXI_EMPR)), '%') Or T1.CO_AUXI_EMPR Is null)  
     And (Isnull(T1.CO_ORDE_SERV,'%') Like Isnull(Rtrim(Ltrim(@CSCO_ORDE_SERV)), '%') Or T1.CO_ORDE_SERV Is null)  
     And T2.CO_EMPR = T1.CO_EMPR  
     And T2.NU_ANNO = T1.NU_ANNO  
     And T2.CO_PART = T1.CO_PART  
     And T2.TI_SITU = 'ACT'  
  
    Open  CT_TXMVTO_CNTB_U02_3  
    Fetch CT_TXMVTO_CNTB_U02_3 Into  
     @CNNU_REGI_EMPR, @CSCO_PART, @CNNU_SECU, @CNPO_APLI, @CSCO_DOMI, @CNTI_SIGN_CONT,@CNTI_OPER_ARIT,@CSCO_MONE_PART,  
     @CSTI_CAMB_PART   
    While @@Fetch_Status = 0  
    Begin  
     If Not Exists (Select CO_PART  
       From OFIPRES..TRSIST_PART  
       Where CO_EMPR = @CSCO_EMPR  
         And NU_ANNO = @CNNU_ANNO  
         And CO_PART = @CSCO_PART)  
      Begin -- Si lee de Contabilidad  

 --- Valida Monedas - Calcula importes  
     If @VSCO_MONE_CNTB = @CSCO_MONE_PART -- moneda contb = moneda partida  
        Select @VNIM_MVTO = @VNIM_MVTO_ORIG  
     If @VSCO_MONE_CNTB = @CSCO_MONE     -- moneda contb = moneda movimiento  
     Begin  
       If @CSCO_MONE = @CSCO_MONE_PART  -- moneda movimiento = moneda partida  
          Select @VNIM_MVTO = @VNIM_MVTO_ORIG  
       If @CSCO_MONE != @CSCO_MONE_PART  -- moneda movimiento != moneda partida  
         Begin
          If @CNFA_CAMB = 1
          Begin
            Select @VNFA_CMPR_OFIC = Isnull(Max(FA_CMPR_OFIC), 1), @VNFA_VNTA_OFIC = Isnull(Max(FA_VNTA_OFIC), 1)
            From TCFACT_CAMB
            Where co_mone = @CSCO_MONE_PART
 	     And co_mone_base = @VSCO_MONE_CNTB
 	     And fe_camb = @CDFE_ASTO_CNTB
     
           If @CSTI_CAMB = 'COM'
             Select @CNFA_CAMB = @VNFA_CMPR_OFIC
           Else
             Select @CNFA_CAMB = @VNFA_VNTA_OFIC
          End

          Exec SP_CONV_MONE_Q03 @CSCO_EMPR, @CSCO_MONE, @CSCO_MONE_PART, @CSTI_CAMB, @CSTI_CAMB_PART, @CNFA_CAMB, 
	       @CDFE_ASTO_CNTB, @VNIM_MVTO_ORIG, @VNIM_MVTO OUTPUT
         End
     End

     If @VSCO_MONE_CNTB != @CSCO_MONE     -- moneda contb != moneda movimiento  
     Begin  
      If @CSCO_MONE = @CSCO_MONE_PART   -- moneda movimiento = moneda partida  
       Select @VNIM_MVTO = @VNIM_MVTO_ORIG  
      If @CSCO_MONE != @CSCO_MONE_PART   -- moneda movimiento != moneda partida  
        Begin
         If @CNFA_CAMB = 1
          Begin
            Select @VNFA_CMPR_OFIC = Isnull(Max(FA_CMPR_OFIC), 1), @VNFA_VNTA_OFIC = Isnull(Max(FA_VNTA_OFIC), 1)
            From TCFACT_CAMB
            Where co_mone = @CSCO_MONE_PART
	     And co_mone_base = @VSCO_MONE_CNTB
	     And fe_camb = @CDFE_ASTO_CNTB
     
          If @CSTI_CAMB = 'COM'
           Select @CNFA_CAMB = @VNFA_CMPR_OFIC
          Else
           Select @CNFA_CAMB = @VNFA_VNTA_OFIC
         End
        Exec SP_CONV_MONE_Q03 @CSCO_EMPR, @CSCO_MONE, @CSCO_MONE_PART, @CSTI_CAMB, @CSTI_CAMB_PART, @CNFA_CAMB, 
	     @CDFE_ASTO_CNTB, @VNIM_MVTO_ORIG, @VNIM_MVTO OUTPUT
        End
     End  

 -- Extrae porcentaje de Dominio  
 Select @VNPO_APLI_DOMI = Max(PO_APLI)  
   From OFIPRES..TMPRES_DOMI  
  Where CO_EMPR = @CSCO_EMPR  
    And NU_ANNO = @CNNU_ANNO  
    And CO_DOMI = @CSCO_DOMI  

 If @VNPO_APLI_DOMI IS NULL Select @VNPO_APLI_DOMI = 100  
   -- Realiza los calculos  
   Select @VNIM_MVTO = @VNIM_MVTO * (@VNPO_APLI_DOMI /100) -- Aplica % dominio  
   Select @VNIM_MVTO = @VNIM_MVTO * (@CNPO_APLI /100)  -- Aplica % configurado  
   Select @VNIM_MVTO = @VNIM_MVTO * (@CNTI_SIGN_CONT)  -- Aplica Signo - naturaleza  
   Select @VNIM_MVTO_ACUM = @VNIM_MVTO * (@CNTI_OPER_ARIT) -- Aplica Acumulador  
 
 If @VNIM_MVTO_ACUM Is Null Select @VNIM_MVTO_ACUM = 0  
  
 If @CSSI_MVTO_CNTB = 'APR' -- Si el estado actual es aprobado  
 Begin   
 --Actualiza datos Reales - TDPART_CONT  
  Update OFIPRES..TDPART_CONT   
     Set IM_CONT = Isnull(IM_CONT, 0)+ @VNIM_MVTO_ACUM 
   Where CO_EMPR = @CSCO_EMPR  
     And NU_ANNO = @CNNU_ANNO  
     And NU_MESE = @CNNU_MESE  
     And NU_REGI_EMPR = @CNNU_REGI_EMPR  
     And CO_PART = @CSCO_PART  
     And NU_SECU = @CNNU_SECU  

 --Actualiza datos Reales - TAPART_MENS  
  Update OFIPRES..TAPART_MENS  
     Set IM_EJEC = Isnull(IM_EJEC, 0)+ @VNIM_MVTO_ACUM
   Where CO_EMPR = @CSCO_EMPR  
     And NU_ANNO = @CNNU_ANNO  
     And NU_MESE = @CNNU_MESE  
     And NU_REGI_EMPR = @CNNU_REGI_EMPR  
     And CO_PART = @CSCO_PART  

  Select @VNNU_SECU = Isnull(Max(NU_SECU), 0) + 1  
    From OFIPRES..TDMVTO_PART  
   Where CO_EMPR = @CSCO_EMPR  
     And NU_ANNO = @CNNU_ANNO  
     And NU_MESE = @CNNU_MESE  
     And NU_REGI_EMPR = @CNNU_REGI_EMPR  
     And CO_PART = @CSCO_PART  
  
  Insert into OFIPRES..TDMVTO_PART(CO_EMPR, NU_ANNO,NU_MESE,NU_REGI_EMPR,CO_PART, NU_SECU,  
              TI_ORIG_MVTO,CO_SIST_ORIG,CO_UNID_CNTB,NU_ASTO,TI_AUXI_EMPR, CO_AUXI_EMPR, 
	      CO_ORDE_SERV,TI_DOCU,NU_DOCU,FE_DOCU, CO_MONE, FA_CAMB, IM_MVTO_ORIG, 
	      IM_MVTO_CNTB,IM_MVTO_PART, CN_CANT, TI_DOCU_ORCO, NU_DOCU_ORCO,CO_USUA_CREA, 
	      FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)
      values (@CSCO_EMPR, @CNNU_ANNO, @CNNU_MESE, @CNNU_REGI_EMPR, @CSCO_PART, @VNNU_SECU,
	      'EJE','OFICONT', @CSCO_UNID_CNTB, @CSNU_ASTO, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, 
	      @CSCO_ORDE_SERV, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSCO_MONE, @CNFA_CAMB, 
	      @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @VNIM_MVTO_ACUM, 0, NULL, NULL, @CSCO_USUA_CREA, 
	      @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)

 End  -- FIn si el estado Actual es Aprobado  
 Else If (@CSSI_MVTO_ANTE = 'APR' AND @CSSI_MVTO_CNTB = 'ELI') OR   
         (@CSSI_MVTO_ANTE = 'APR' AND @CSSI_MVTO_CNTB = 'ANU') OR   
         (@CSSI_MVTO_ANTE = 'APR' AND @CSSI_MVTO_CNTB = 'DSP') OR  
         (@CSSI_MVTO_ANTE = 'APR' AND @CSSI_MVTO_CNTB = 'DIG')  
 Begin  
 --Actualiza datos Reales - TDPART_CONT  
  Update OFIPRES..TDPART_CONT   
     Set IM_CONT = Isnull(IM_CONT, 0)- @VNIM_MVTO_ACUM  
   Where CO_EMPR = @CSCO_EMPR  
     And NU_ANNO = @CNNU_ANNO  
     And NU_MESE = @CNNU_MESE  
     And NU_REGI_EMPR = @CNNU_REGI_EMPR  
     And CO_PART = @CSCO_PART  
     And NU_SECU = @CNNU_SECU

 --Actualiza datos Reales - TAPART_MENS  
  Update OFIPRES..TAPART_MENS  
     Set IM_EJEC = Isnull(IM_EJEC, 0)- @VNIM_MVTO_ACUM  
   Where CO_EMPR = @CSCO_EMPR  
     And NU_ANNO = @CNNU_ANNO  
     And NU_MESE = @CNNU_MESE  
     And NU_REGI_EMPR = @CNNU_REGI_EMPR  
     And CO_PART = @CSCO_PART  
  
  Delete From OFIPRES..TDMVTO_PART  
  Where CO_EMPR = @CSCO_EMPR  
  And NU_ANNO = @CNNU_ANNO  
  And NU_MESE = @CNNU_MESE  
  And NU_REGI_EMPR = @CNNU_REGI_EMPR  
  And CO_PART = @CSCO_PART           
  And TI_ORIG_MVTO = 'EJE'  
  And CO_SIST_ORIG = 'OFICONT'  
  And NU_ASTO = @CSNU_ASTO  
  And IM_MVTO_ORIG = @CNIM_MVTO_ORIG  
  And IM_MVTO_CNTB = @CNIM_MVTO_CNTB  
 End  
End  -- Fin Lee de Contabilidad  
 Fetch CT_TXMVTO_CNTB_U02_3 Into  
       @CNNU_REGI_EMPR, @CSCO_PART, @CNNU_SECU, @CNPO_APLI, @CSCO_DOMI, @CNTI_SIGN_CONT, @CNTI_OPER_ARIT, 
       @CSCO_MONE_PART, @CSTI_CAMB_PART  
End -- END WHILE @@Fetch_Status = 0 - CURSOR 2

   Close CT_TXMVTO_CNTB_U02_3  
   Deallocate CT_TXMVTO_CNTB_U02_3  
   End -- Fin si hay Sistema Presupuesto  
  Fetch CT_TXMVTO_CNTB_U02_2 Into  
   @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CNNU_ANNO, @CNNU_MESE, @CNNU_SECU_MVTO,  
   @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_MONE, @CSTI_OPER, @CNIM_MVTO_ORIG,  
   @CNIM_MVTO_CNTB, @CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, @CDFE_ASTO_CNTB, @CSTI_CAMB, @CNFA_CAMB,  
   @CSNU_ASTO, @CSCO_OPRC_CNTB, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,
   @CSCO_USUA_CREA,@CSCO_USUA_MODI,@CDFE_USUA_CREA,@CDFE_USUA_MODI   
 End -- END WHILE @@Fetch_Status = 0  

  Close CT_TXMVTO_CNTB_U02_2  
  Deallocate CT_TXMVTO_CNTB_U02_2  
  End --(If Exists( Select NU_PROC From Deleted....)   
End  
Return  
/*------------------------ Fin ----------------------*/
GO

CREATE Trigger [dbo].[TU_TXMVTO_CNTB_U05] On [dbo].[TXMVTO_CNTB]    
For Update    
/*---------------------------------------------------------*/    
/*---- Empresa              : OFISIS S.A.              ----*/    
/*---- Cliente              : OFISIS S.A.              ----*/    
/*---- Sistema              : OFICONT                  ----*/    
/*---- M>dulo               : Empresa                ----*/    
/*---- Programa             : Actualiza Datos Reales   ----*/    
/*---- Script               :                          ----*/    
/*---- Nombre TR            : TU_TXMVTO_CNTB_U05       ----*/    
/*---- Desarrollado por     : LGP                      ----*/    
/*---- Fecha Creaci>n       : 25/10/2004               ----*/    
/*---- Base de Datos        : SQL                      ----*/    
/*---- Versi>n              : 8.0                      ----*/    
/*---- Invoca a SP          :                          ----*/    
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/    
/*---- Se ejecuta con el INSERT de la Tabla            ----*/    
/*---------------------------------------------------------*/    
As    
If Update(TI_OPER) or Update(IM_MVTO_ORIG) 
Begin    
Declare     
  @CSCO_EMPR      TD_VC_002,    
  @CNNU_CNTB_EMPR TD_IN_001,    
  @CSCO_UNID_CNTB TD_VC_003,    
  @CSCO_OPRC_CNTB TD_VC_003,    
  @CNNU_ANNO      TD_IN_001,    
  @CNNU_MESE      TD_IN_001,    
  @CSNU_ASTO      TD_VC_010,    
  @CNNU_SECU     TD_IN_002,    
  @CDFE_ASTO_CNTB TD_DT_001,    
  @CSCO_CNTA_EMPR TD_VC_020,    
  @CSTI_AUXI_EMPR TD_VC_001,    
  @CSCO_AUXI_EMPR TD_VC_020,    
  @CSCO_MONE      TD_VC_003,    
  @CSTI_OPER      TD_VC_003,    
  @CNIM_MVTO_ORIG TD_NU_016_004,    
  @CNIM_MVTO_CNTB TD_NU_016_004,    
  @VNIM_CARG_ORIG TD_NU_016_004,    
  @VNIM_ABON_ORIG TD_NU_016_004,    
  @VNIM_CARG_CNTB TD_NU_016_004,    
  @VNIM_ABON_CNTB TD_NU_016_004,    
  @CSSI_MVTO_CNTB TD_VC_003,    
  @CSCO_ORDE_SERV TD_VC_020,    
  @VSPR_DATO     TD_VC_020,    
  @CSSI_MVTO_ANTE TD_VC_003,    
-- Variables Loop --    
  @VNNV_INFO_CNTA TD_IN_001,    
  @VSNV_QUIE_CNTA TD_VC_010,    
  @VNCA_INIC      TD_IN_001,    
  @VNCA_LONG      TD_IN_001,    
  @VNCA_LONG_AUXI TD_IN_001,    
  @VNNV_AUXI      TD_IN_001,    
  @VNNU_FINA      TD_IN_001,    
------------------- Variables Actualiza Datos Reales ----------------------------    
  @CNNU_SECU_MVTO TD_IN_002,    
  @VNIM_MVTO_ORIG TD_NU_016_004,    
  @VNIM_MVTO_CNTB TD_NU_016_004,    
  @VSDE_CADE_IMPR TD_VC_020,    
  @VSCO_MONE_CNTB TD_VC_003,    
  @CNNU_REGI_EMPR TD_IN_001,    
  @CSCO_PART      TD_VC_020,    
  @CNPO_APLI      TD_NU_015_006,    
  @CSCO_DOMI      TD_VC_003,    
  @CNTI_SIGN_CONT TD_IN_001,    
  @CNTI_OPER_ARIT TD_IN_001,    
  @CSCO_MONE_PART TD_VC_003,    
  @CSTI_CAMB_PART TD_VC_003,     
  @VNIM_MVTO      TD_NU_016_004,    
  @VNIM_MVTO_ACUM TD_NU_016_004,    
  @VNIM_MVTO_TOTA TD_NU_016_004,    
  @VNPO_APLI_DOMI TD_NU_015_006,    
  @CSTI_CAMB      TD_VC_003,    
  @CNFA_CAMB      TD_NU_015_006,    
  @VSST_PRES      TD_VC_001,    
  @CSTI_DOCU      TD_VC_003,    
  @CSNU_DOCU      TD_VC_020,    
  @CDFE_DOCU      TD_DT_001,    
  @VNNU_SECU      TD_IN_002,  
  @VNIM_ANTE_ORIG TD_NU_016_004,  
  @VNIM_ANTE_CNTB TD_NU_016_004,  
  @VNIM_MVTO_ANTE TD_NU_016_004,  
  @VNIM_ACUM_ANTE TD_NU_016_004,  
  @VNFA_CMPR_OFIC TD_NU_015_006,  
  @VNFA_VNTA_OFIC TD_NU_015_006,
  @CSTI_OPER_ANTE TD_VC_003,

@CSCO_USUA_CREA         TD_VC_008,
@CSCO_USUA_MODI         TD_VC_008,
@CDFE_USUA_CREA         TD_DT_001_SIST,
@CDFE_USUA_MODI         TD_DT_001_SIST    
  
------------------- Actualiza Datos Reales ---------------------------------------      
--Solo se Ejecuta si el numero de Proceso es Nulo o Cero    
If Exists( Select NU_PROC From inserted    
           Where  NU_PROC Is Null)    
Begin    
  Declare CT_TXMVTO_CNTB_U05_2 Cursor    
  For    
  Select  T1.CO_EMPR, T1.NU_CNTB_EMPR, T1.CO_UNID_CNTB, T1.NU_ANNO, T1.NU_MESE, T1.NU_SECU,    
          T1.CO_CNTA_EMPR, T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR, T1.CO_MONE,  T1.TI_OPER,    
   Round(T1.IM_MVTO_ORIG, 2), Round(T1.IM_MVTO_CNTB, 2), LTRIM(RTRIM(T1.CO_ORDE_SERV)),   
   T1.SI_MVTO_CNTB, T1.FE_ASTO_CNTB, T1.TI_CAMB, T1.FA_CAMB, T1.NU_ASTO, T1.CO_OPRC_CNTB,   
   T1.TI_DOCU, T1.NU_DOCU, T1.FE_DOCU,
   t1.CO_USUA_CREA,t1.CO_USUA_MODI,t1.FE_USUA_CREA,t1.FE_USUA_MODI    
  From inserted T1  
       
  Open  CT_TXMVTO_CNTB_U05_2    
  Fetch CT_TXMVTO_CNTB_U05_2 Into    
   @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CNNU_ANNO, @CNNU_MESE, @CNNU_SECU_MVTO,    
   @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_MONE, @CSTI_OPER, @CNIM_MVTO_ORIG,    
   @CNIM_MVTO_CNTB, @CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, @CDFE_ASTO_CNTB, @CSTI_CAMB, @CNFA_CAMB,    
   @CSNU_ASTO, @CSCO_OPRC_CNTB, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,
   @CSCO_USUA_CREA,@CSCO_USUA_MODI,@CDFE_USUA_CREA,@CDFE_USUA_MODI    
  
  While @@Fetch_Status = 0    
  Begin    
   Select @VSST_PRES = ST_PRES    
     From TMEMPR    
    Where CO_EMPR = @CSCO_EMPR    
  
   If @@Fetch_Status < 0 Or @VSST_PRES = 'N'    
    Begin    
        Close CT_TXMVTO_CNTB_U05_2    
        Deallocate CT_TXMVTO_CNTB_U05_2    
        Return    
    End    
    
   If @VSST_PRES = 'S' -- Si Sistema Presupuesto    
   Begin    
    If @CNIM_MVTO_CNTB IS Null   
       Select @CNIM_MVTO_CNTB = 0    
  
    If @CSTI_OPER = 'CAR'    
      Begin    
        Select @VNIM_MVTO_ORIG = @CNIM_MVTO_ORIG    
        Select @VNIM_MVTO_CNTB = @CNIM_MVTO_CNTB    
      End    
    Else If @CSTI_OPER = 'ABO'    
      Begin    
        Select @VNIM_MVTO_ORIG = (-1)* @CNIM_MVTO_ORIG    
        Select @VNIM_MVTO_CNTB = (-1)* @CNIM_MVTO_CNTB    
      End    
  
    Select @VSCO_MONE_CNTB = CO_MONE    
      From TTCNTB_EMPR    
     Where CO_EMPR = @CSCO_EMPR    
       And NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
    
    Select  @CSTI_OPER_ANTE = TI_OPER, @VNIM_ANTE_ORIG = Round(IM_MVTO_ORIG, 2), @VNIM_ANTE_CNTB = Round(IM_MVTO_CNTB, 2)  
     From   Deleted    
     Where  CO_EMPR = @CSCO_EMPR    
     And    NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
     And    CO_UNID_CNTB = @CSCO_UNID_CNTB    
     And    CO_OPRC_CNTB = @CSCO_OPRC_CNTB    
     And    NU_ANNO = @CNNU_ANNO    
     And    NU_MESE = @CNNU_MESE    
     And    NU_ASTO = @CSNU_ASTO    
     And    NU_SECU = @CNNU_SECU_MVTO     

    If @CSTI_OPER_ANTE = 'ABO'    
      Begin    
        Select @VNIM_ANTE_ORIG = (-1)* @VNIM_ANTE_ORIG    
        Select @VNIM_ANTE_CNTB = (-1)* @VNIM_ANTE_CNTB    
      End    
  
    --- Cursor 2     
    Declare CT_TXMVTO_CNTB_U05_3 Cursor    
    For        
     Select T1.NU_REGI_EMPR, T1.CO_PART, T1.NU_SECU, T1.PO_APLI, T1.CO_DOMI,    
     T1.TI_SIGN_CONT, T1.TI_OPER_ARIT, T2.CO_MONE, T2.TI_CAMB    
     From OFIPRES..TDPART_CONT T1, OFIPRES..TMPART T2    
     Where T1.CO_EMPR = @CSCO_EMPR    
     And T1.NU_ANNO = @CNNU_ANNO    
     And T1.NU_MESE = @CNNU_MESE    
     And T1.NU_CNTB_EMPR = @CNNU_CNTB_EMPR    
     And (Isnull(T1.CO_UNID_CNTB,'%') Like Isnull(Rtrim(Ltrim(@CSCO_UNID_CNTB)), '%') Or T1.CO_UNID_CNTB Is null)    
     And (Isnull(T1.CO_CNTA_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSCO_CNTA_EMPR)), '%') Or T1.CO_CNTA_EMPR Is null)    
     And (Isnull(T1.TI_AUXI_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSTI_AUXI_EMPR)), '%') Or T1.TI_AUXI_EMPR Is null)    
     And (Isnull(T1.CO_AUXI_EMPR,'%') Like Isnull(Rtrim(Ltrim(@CSCO_AUXI_EMPR)), '%') Or T1.CO_AUXI_EMPR Is null)    
     And (Isnull(T1.CO_ORDE_SERV,'%') Like Isnull(Rtrim(Ltrim(@CSCO_ORDE_SERV)), '%') Or T1.CO_ORDE_SERV Is null)    
     And T2.CO_EMPR = T1.CO_EMPR    
     And T2.NU_ANNO = T1.NU_ANNO    
     And T2.CO_PART = T1.CO_PART    
     And T2.TI_SITU = 'ACT'    
    
    Open  CT_TXMVTO_CNTB_U05_3    
    Fetch CT_TXMVTO_CNTB_U05_3 Into    
     @CNNU_REGI_EMPR, @CSCO_PART, @CNNU_SECU, @CNPO_APLI, @CSCO_DOMI, @CNTI_SIGN_CONT,@CNTI_OPER_ARIT,@CSCO_MONE_PART,    
     @CSTI_CAMB_PART     
    While @@Fetch_Status = 0    
    Begin    
     If Not Exists (Select CO_PART    
       From OFIPRES..TRSIST_PART    
       Where CO_EMPR = @CSCO_EMPR    
         And NU_ANNO = @CNNU_ANNO    
         And CO_PART = @CSCO_PART)    
      Begin -- Si lee de Contabilidad    
  
 --- Valida Monedas - Calcula importes    
     If @VSCO_MONE_CNTB = @CSCO_MONE_PART -- moneda contb = moneda partida    
       Begin  
        Select @VNIM_MVTO = @VNIM_MVTO_ORIG    
        Select @VNIM_MVTO_ANTE = @VNIM_ANTE_ORIG    
       End  
     If @VSCO_MONE_CNTB = @CSCO_MONE     -- moneda contb = moneda movimiento    
     Begin    
       If @CSCO_MONE = @CSCO_MONE_PART  -- moneda movimiento = moneda partida    
         Begin  
          Select @VNIM_MVTO = @VNIM_MVTO_ORIG    
          Select @VNIM_MVTO_ANTE = @VNIM_ANTE_ORIG    
         End  
       If @CSCO_MONE != @CSCO_MONE_PART  -- moneda movimiento != moneda partida    
         Begin
         If @CNFA_CAMB = 1  
           Begin  
             Select @VNFA_CMPR_OFIC = Isnull(Max(FA_CMPR_OFIC), 1), @VNFA_VNTA_OFIC = Isnull(Max(FA_VNTA_OFIC), 1)  
             From TCFACT_CAMB  
             Where CO_MONE = @CSCO_MONE_PART  
              And CO_MONE_BASE = @VSCO_MONE_CNTB  
              And FE_CAMB = @CDFE_ASTO_CNTB  
       
             If @CSTI_CAMB = 'COM'  
              Select @CNFA_CAMB = @VNFA_CMPR_OFIC  
             Else  
              Select @CNFA_CAMB = @VNFA_VNTA_OFIC  
           End  
  
          Exec SP_CONV_MONE_Q03 @CSCO_EMPR, @CSCO_MONE, @CSCO_MONE_PART, @CSTI_CAMB, @CSTI_CAMB_PART, @CNFA_CAMB,   
               @CDFE_ASTO_CNTB, @VNIM_MVTO_ORIG, @VNIM_MVTO OUTPUT  
  
          Exec SP_CONV_MONE_Q03 @CSCO_EMPR, @CSCO_MONE, @CSCO_MONE_PART, @CSTI_CAMB, @CSTI_CAMB_PART, @CNFA_CAMB,   
               @CDFE_ASTO_CNTB, @VNIM_ANTE_ORIG, @VNIM_MVTO_ANTE OUTPUT  
         End
     End  
  
     If @VSCO_MONE_CNTB != @CSCO_MONE  -- moneda contb != moneda movimiento   
     Begin    
      If @CSCO_MONE = @CSCO_MONE_PART  -- moneda movimiento = moneda partida   
        Begin  
         Select @VNIM_MVTO = @VNIM_MVTO_ORIG    
         Select @VNIM_MVTO_ANTE = @VNIM_ANTE_ORIG    
        End  
      If @CSCO_MONE != @CSCO_MONE_PART   -- moneda movimiento != moneda partida    
	Begin
        If @CNFA_CAMB = 1  
          Begin  
           Select @VNFA_CMPR_OFIC = Isnull(Max(FA_CMPR_OFIC), 1), @VNFA_VNTA_OFIC = Isnull(Max(FA_VNTA_OFIC), 1)  
           From TCFACT_CAMB  
           Where CO_MONE = @CSCO_MONE_PART  
            And CO_MONE_BASE = @VSCO_MONE_CNTB  
            And FE_CAMB = @CDFE_ASTO_CNTB  
       
           If @CSTI_CAMB = 'COM'  
            Select @CNFA_CAMB = @VNFA_CMPR_OFIC  
           Else  
            Select @CNFA_CAMB = @VNFA_VNTA_OFIC  
          End  
         Exec SP_CONV_MONE_Q03 @CSCO_EMPR, @CSCO_MONE, @CSCO_MONE_PART, @CSTI_CAMB, @CSTI_CAMB_PART, @CNFA_CAMB,   
             @CDFE_ASTO_CNTB, @VNIM_MVTO_ORIG, @VNIM_MVTO OUTPUT  
  
         Exec SP_CONV_MONE_Q03 @CSCO_EMPR, @CSCO_MONE, @CSCO_MONE_PART, @CSTI_CAMB, @CSTI_CAMB_PART, @CNFA_CAMB,   
             @CDFE_ASTO_CNTB, @VNIM_ANTE_ORIG, @VNIM_MVTO_ANTE OUTPUT  
	End
     End    
  
 -- Extrae porcentaje de Dominio    
 Select @VNPO_APLI_DOMI = Max(PO_APLI)    
   From OFIPRES..TMPRES_DOMI    
  Where CO_EMPR = @CSCO_EMPR    
    And NU_ANNO = @CNNU_ANNO    
    And CO_DOMI = @CSCO_DOMI    

 If @VNPO_APLI_DOMI IS NULL Select @VNPO_APLI_DOMI = 100    
   -- Realiza los calculos    
   Select @VNIM_MVTO = @VNIM_MVTO * (@VNPO_APLI_DOMI /100) -- Aplica % dominio    
   Select @VNIM_MVTO_ANTE = @VNIM_MVTO_ANTE * (@VNPO_APLI_DOMI /100) -- Aplica % dominio ANTE
   Select @VNIM_MVTO = @VNIM_MVTO * (@CNPO_APLI /100)  -- Aplica % configurado    
   Select @VNIM_MVTO_ANTE = @VNIM_MVTO_ANTE * (@CNPO_APLI /100)  -- Aplica % configurado ANTE
   Select @VNIM_MVTO = @VNIM_MVTO * (@CNTI_SIGN_CONT)  -- Aplica Signo - naturaleza    
   Select @VNIM_MVTO_ANTE = @VNIM_MVTO_ANTE * (@CNTI_SIGN_CONT)  -- Aplica Signo - naturaleza ANTE   
   Select @VNIM_MVTO_ACUM = @VNIM_MVTO * (@CNTI_OPER_ARIT) -- Aplica Acumulador    
   Select @VNIM_ACUM_ANTE = @VNIM_MVTO_ANTE * (@CNTI_OPER_ARIT) -- Aplica Acumulador    
   
 If @VNIM_MVTO_ACUM Is Null Select @VNIM_MVTO_ACUM = 0    
 If @VNIM_ACUM_ANTE Is Null Select @VNIM_ACUM_ANTE = 0    

 If @CSSI_MVTO_CNTB = 'APR' -- Si el estado actual es aprobado    
 Begin     
 --Actualiza datos Reales - TDPART_CONT    
  Update OFIPRES..TDPART_CONT     
     Set IM_CONT = Isnull(IM_CONT, 0) - @VNIM_ACUM_ANTE + @VNIM_MVTO_ACUM   
   Where CO_EMPR = @CSCO_EMPR    
     And NU_ANNO = @CNNU_ANNO    
     And NU_MESE = @CNNU_MESE    
     And NU_REGI_EMPR = @CNNU_REGI_EMPR    
     And CO_PART = @CSCO_PART    
     And NU_SECU = @CNNU_SECU    
  
 --Actualiza datos Reales - TAPART_MENS    
  Update OFIPRES..TAPART_MENS    
     Set IM_EJEC = Isnull(IM_EJEC, 0) - @VNIM_ACUM_ANTE + @VNIM_MVTO_ACUM  
   Where CO_EMPR = @CSCO_EMPR    
     And NU_ANNO = @CNNU_ANNO    
     And NU_MESE = @CNNU_MESE    
     And NU_REGI_EMPR = @CNNU_REGI_EMPR    
     And CO_PART = @CSCO_PART    
  
  Select @VNNU_SECU = Isnull(Max(NU_SECU), 0) + 1    
    From OFIPRES..TDMVTO_PART    
   Where CO_EMPR = @CSCO_EMPR    
     And NU_ANNO = @CNNU_ANNO    
     And NU_MESE = @CNNU_MESE    
     And NU_REGI_EMPR = @CNNU_REGI_EMPR    
     And CO_PART = @CSCO_PART    
    
  Insert into OFIPRES..TDMVTO_PART(CO_EMPR, NU_ANNO,NU_MESE,NU_REGI_EMPR,CO_PART, NU_SECU,    
              TI_ORIG_MVTO,CO_SIST_ORIG,CO_UNID_CNTB,NU_ASTO,TI_AUXI_EMPR, CO_AUXI_EMPR,   
       CO_ORDE_SERV,TI_DOCU,NU_DOCU,FE_DOCU, CO_MONE, FA_CAMB, IM_MVTO_ORIG,   
       IM_MVTO_CNTB,IM_MVTO_PART, CN_CANT, TI_DOCU_ORCO, NU_DOCU_ORCO,CO_USUA_CREA,   
       FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)  
      values (@CSCO_EMPR, @CNNU_ANNO, @CNNU_MESE, @CNNU_REGI_EMPR, @CSCO_PART, @VNNU_SECU,  
       'EJE','OFICONT', @CSCO_UNID_CNTB, @CSNU_ASTO, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,   
       @CSCO_ORDE_SERV, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSCO_MONE, @CNFA_CAMB,   
       @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @VNIM_MVTO_ACUM, 0, NULL, NULL, @CSCO_USUA_CREA, 
       @CDFE_USUA_CREA, @CSCO_USUA_MODI, @CDFE_USUA_MODI)  
  
 End  -- FIn si el estado Actual es Aprobado    
End  -- Fin Lee de Contabilidad    
 Fetch CT_TXMVTO_CNTB_U05_3 Into    
       @CNNU_REGI_EMPR, @CSCO_PART, @CNNU_SECU, @CNPO_APLI, @CSCO_DOMI, @CNTI_SIGN_CONT, @CNTI_OPER_ARIT,   
       @CSCO_MONE_PART, @CSTI_CAMB_PART    
End -- END WHILE @@Fetch_Status = 0 - CURSOR 2  
  
   Close CT_TXMVTO_CNTB_U05_3    
   Deallocate CT_TXMVTO_CNTB_U05_3    
   End -- Fin si hay Sistema Presupuesto    
  Fetch CT_TXMVTO_CNTB_U05_2 Into    
   @CSCO_EMPR, @CNNU_CNTB_EMPR, @CSCO_UNID_CNTB, @CNNU_ANNO, @CNNU_MESE, @CNNU_SECU_MVTO,    
   @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSCO_MONE, @CSTI_OPER, @CNIM_MVTO_ORIG,    
   @CNIM_MVTO_CNTB, @CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, @CDFE_ASTO_CNTB, @CSTI_CAMB, @CNFA_CAMB,    
   @CSNU_ASTO, @CSCO_OPRC_CNTB, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,
   @CSCO_USUA_CREA,@CSCO_USUA_MODI,@CDFE_USUA_CREA,@CDFE_USUA_MODI    
 End -- END WHILE @@Fetch_Status = 0    
  
  Close CT_TXMVTO_CNTB_U05_2    
  Deallocate CT_TXMVTO_CNTB_U05_2    
  End --(If Exists( Select NU_PROC From Deleted....)     
End    
Return    
/*------------------------ Fin ----------------------*/
GO

GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__CO_CN__2665ABE1] CHECK (([CO_CNTA_EMPR]>='0' AND [CO_CNTA_EMPR]<='99999999999999999999'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__FA_CA__2942188C] CHECK (([FA_CAMB]>=(0)))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__FA_CA__2B2A60FE] CHECK (([FA_CAMB_DIAR]>=(0)))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__IM_MV__2EFAF1E2] CHECK (([IM_MVTO_ORIG]>=(0)))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__IM_MV__30E33A54] CHECK (([IM_MVTO_CNTB]>=(0)))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__IM_MV__39788055] CHECK (([IM_MVTO_RETE]>=(0)))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__NU_AN__247D636F] CHECK (([NU_ANNO]>=(0)))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__NU_CN__22951AFD] CHECK (([NU_CNTB_EMPR]>=(1) AND [NU_CNTB_EMPR]<=(99)))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__NU_ME__257187A8] CHECK (([NU_MESE]>=(0) AND [NU_MESE]<=(13)))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__NU_OR__48BAC3E5] CHECK (([NU_ORDE_FORM]>=(0)))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__PO_DI__3D491139] CHECK (([PO_DIST]>=(0)))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__SI_MV__31D75E8D] CHECK (([SI_MVTO_CNTB]='DSP' OR [SI_MVTO_CNTB]='DIG' OR [SI_MVTO_CNTB]='APR' OR [SI_MVTO_CNTB]='ANU' OR [SI_MVTO_CNTB]='ELI'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_AJ__46D27B73] CHECK (([ST_AJUS_ORIG]='N' OR [ST_AJUS_ORIG]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_CA__3F3159AB] CHECK (([ST_CANC_DOCU]='N' OR [ST_CANC_DOCU]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_DI__4119A21D] CHECK (([ST_DIFE_MAYO]='N' OR [ST_DIFE_MAYO]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_DI__4301EA8F] CHECK (([ST_DIFE_CAMB]='N' OR [ST_DIFE_CAMB]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_FO__4AA30C57] CHECK (([ST_FORM_1062]='N' OR [ST_FORM_1062]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_FO__4C8B54C9] CHECK (([ST_FORM_1262]='N' OR [ST_FORM_1262]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_FO__4E739D3B] CHECK (([ST_FORM_1662]='N' OR [ST_FORM_1662]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_GE__35A7EF71] CHECK (([ST_GEST]='N' OR [ST_GEST]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_IM__33BFA6FF] CHECK (([ST_IMPR_CHEQ]='N' OR [ST_IMPR_CHEQ]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_IM__3B60C8C7] CHECK (([ST_IMPR_RETE]='N' OR [ST_IMPR_RETE]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_MA__44EA3301] CHECK (([ST_MASI]='N' OR [ST_MASI]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_RE__379037E3] CHECK (([ST_REDO]='N' OR [ST_REDO]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__ST_RE__505BE5AD] CHECK (([ST_REPA]='N' OR [ST_REPA]='S'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__TI_CA__2759D01A] CHECK (([TI_CAMB]='PAC' OR [TI_CAMB]='VEN' OR [TI_CAMB]='COM'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [CK__TXMVTO_CN__TI_OP__2D12A970] CHECK (([TI_OPER]='ABO' OR [TI_OPER]='CAR'))
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [PK_TXMVTO_CNTB_01] PRIMARY KEY CLUSTERED  ([CO_EMPR], [NU_CNTB_EMPR], [CO_UNID_CNTB], [CO_OPRC_CNTB], [NU_ANNO], [NU_MESE], [NU_ASTO], [NU_SECU]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [ITXMVTO_CNTB_03] ON [dbo].[TXMVTO_CNTB] ([CO_EMPR], [NU_CNTB_EMPR], [CO_UNID_CNTB], [CO_OPRC_CNTB], [NU_ANNO], [NU_MESE], [NU_ASTO]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [ITXMVTO_CNTB_04] ON [dbo].[TXMVTO_CNTB] ([CO_EMPR], [NU_CNTB_EMPR], [NU_ANNO], [NU_MESE]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [ITXMVTO_CNTB_01] ON [dbo].[TXMVTO_CNTB] ([CO_EMPR], [NU_CNTB_EMPR], [NU_ANNO], [NU_MESE], [CO_CNTA_EMPR], [TI_AUXI_EMPR], [CO_AUXI_EMPR], [SI_MVTO_CNTB]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [ITXMVTO_CNTB_02] ON [dbo].[TXMVTO_CNTB] ([CO_EMPR], [NU_CNTB_EMPR], [NU_ANNO], [NU_MESE], [CO_CNTA_EMPR], [TI_AUXI_EMPR], [CO_AUXI_EMPR], [TI_DOCU], [NU_DOCU], [SI_MVTO_CNTB]) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [ITXMVTO_CNTB_05] ON [dbo].[TXMVTO_CNTB] ([CO_EMPR], [NU_PROC]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [FK1_TMPLAN_ANNO_A_TXMVTO_CNTB] FOREIGN KEY ([CO_EMPR], [CO_CNTA_EMPR]) REFERENCES [dbo].[TMPLAN_ANNO] ([CO_EMPR], [CO_CNTA_EMPR])
GO
ALTER TABLE [dbo].[TXMVTO_CNTB] ADD CONSTRAINT [PK1_TCFECH_PROC_A_TXMVTO_CNTB] FOREIGN KEY ([CO_EMPR], [NU_CNTB_EMPR], [CO_UNID_CNTB], [CO_OPRC_CNTB], [NU_ANNO], [NU_MESE]) REFERENCES [dbo].[TCFECH_PROC] ([CO_EMPR], [NU_CNTB_EMPR], [CO_UNID_CNTB], [CO_OPRC_CNTB], [NU_ANNO], [NU_MESE])
GO
